Денис Н.
98 сообщений
#17 лет назад
Доброе время суток. Подскажите пожалуйста, давно хотел реализоваь в ХРюше такую вещь - в контекстном меню, (кликая правой кнопкой по папке), добавить новый элемент - и назвате его что нить типа "Лом". В итоге получается, вставляю я какую нить флешку, или иду на фтп сервак - кликаю правой кнопкой по нужной мне папки, вылазит контекст меню - там выбираю - Лом, и папка копируеться в определённую директорию на моём харде. Думаю что это можно реализовать через реестр, но как? Может кто знает, какие ключи, куда добавлять.. :shok: Зарание спасибо.
Владимир Шишкин
55 сообщений
#17 лет назад

Unit OhYeah;

Interface

Uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus;

Type
TForm1 = Class (TForm)
Procedure FormCreate (Sender : TObject);
Private {Private declarations}
Public {Public declarations}
Procedure WinMsg (Var Msg : TMsg; Var Handled : Boolean);
Procedure DoWhatEever;
End;

Var Form1 : TForm1;

Implementation
{$R *.DFM}

Const ItemID = 99; // ID номер для пункта меню. Может быть любым

Procedure Tform1.WinMsg (Var Msg : TMsg; Var Handled : Boolean);
Begin
If Msg.Message = WM_SYSCOMMAND Then
If Msg.WParam = ItemID Then DoWhatEver;
End;

Procedure TForm1.FormCreate (Sender : TObject);
Begin
Application.OnMessage := WinMsg;
AppendMenu (GetSystemMenu (Form1.Handle, False), MF_SEPARATOR, 0, '');
AppendMenu (GetSystemMenu (Form1.Handle, False), MF_BYPOSITION, ItemID, '&My menu');
AppendMenu (GetSystemMenu (Application.Handle, False), MF_SEPARATOR, 0, '');
AppendMenu (GetSystemMenu (Application.Handle, False), MF_BYPOSITION, ItemID,'&My menu minimized');
End;

Procedure TForm1.DoWhatEver;
Begin
Exit; // Вы можете добавить здесь всё, что угодно
End;

End.



Чтобы отловить клик

private

procedure WhetherUserPressesHelp(var Msg: TMessage); message WM_SYSCOMMAND;

....

procedure TForm1.WhetherUserPressesHelp(var Msg: TMessage);
begin
if Msg.WParam = 1001 then
HelpForm.ShowModal
else
inherited; // к примеру вызываем форму на которой будет помощь
end;
Денис Н.
98 сообщений
#17 лет назад
Не понял.. я через реестр нельзя?
Владимир Шишкин
55 сообщений
#17 лет назад
Цитата ("DenTal"):
Не понял.. я через реестр нельзя?

нет низя.
Сергей П.
23 сообщения
#17 лет назад
По моему, всё таки можно.
Можно прописать в реестре добавление пункта в контекстное меню и программу, которая будет при выборе меню открываться.
А вот где именно прописывать в реестре, не помню. Ищи help по реестру windows.
Денис Н.
98 сообщений
#17 лет назад
Мне кажется, что тоже можно через реестр. Поэтому тему так и обозвал..
Владимир Шишкин
55 сообщений
#17 лет назад
Оффтопик

Когда кажиться-по мануалу рекомендуеться креститься.

 Eosfor
1 сообщение
#17 лет назад
Можно.
создаете раздел HKEY_CLASSES_ROOT\Directory\shell\cmd
в нем создаете HKEY_CLASSES_ROOT\Directory\shell\cmd\command
и у етого комманд - параметр по умолчанию меняете на cmd.exe /k cd ""%1"""

В контекстном меню для любой папки появится доп. пункт cmd