Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обратботка своего пункта меню [D6, Win95/98, WinME, NT4, Win2k, WinXP]


LiveSoft ©   (2006-05-24 02:19:00) 

Здравствуйте! Спасибо этому сайту, я нашёл, как можно добавить свой пункт меню в системное меню Windows. Однако у меня возникли проблемы с его обработкой. Я не знаю, как сделать следующее: когда я выбираю один или несколько файлов, то при щелчке на этом пункте меню их адреса нужно добавить, скажем, в ListBox. Сама программа-то запускается, это и понятно, но где и какой создавать обработчик для выполнения действий, - с этим у меня трудности. Помогите, пожалуйста.
Вот код с этого сайта:

Procedure Integrate(AMenuName, AMenuCaption, ACommandLine: String; AIntegrate: Boolean);
Var R: TRegistry;

Procedure WriteIntegrationData;
Begin
  If Not AIntegrate Then
    Begin
      If R.KeyExists(AMenuName) Then
        R.DeleteKey(AMenuName);
    End
  Else
    Begin
      R.OpenKey(AMenuName, True);
      R.WriteString('', AMenuCaption);
      R.OpenKey('Command', True);
      R.WriteString('', ACommandLine);
    End;
End;

Begin
R := TRegistry.Create;
R.RootKey := HKEY_CLASSES_ROOT;

R.OpenKey('*\shell', True);
WriteIntegrationData;
R.CloseKey;
R.OpenKey('Directory\shell', True);
WriteIntegrationData;

R.CloseKey;
R.Free;
End;


LiveSoft   (2006-06-08 03:24:00) [1]

Помещаю пункт меню:
Integrate('Добавить','Project',ExtractFilePath(ParamStr(0))+'Project.exe',True);

В FormShow пишу:

for i := 1 to ParamCount - 1 do
ListBox.Items.Add(ParamStr(i));

Ничего не добавляет.
Если написать:
Integrate('Добавить','Project',ExtractFilePath(ParamStr(0))+'Project.exe %1',True);

А в FormShow:

for i := 1 to ParamCount do
ListBox.Items.Add(ParamStr(i));

тогда добавляет максимум адрес одной папки.
Что делать? Что не так?


n0name   (2006-06-06 10:40:00) [2]


for i := 1 to ParamCount - 1 do
DoWithFile(ParamStr(i));


Virgo_Style   (2006-06-06 08:03:00) [3]

Почитать? [1]


LiveSoft   (2006-06-06 07:23:00) [4]

Можете пояснить? Или привести пример, посоветовать что-нибудь почитать?


n0name   (2006-06-05 16:09:00) [5]

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


LiveSoft   (2006-06-05 06:58:00) [6]

А в случае нескольких выделенных файлов (папок) как эти функции использовать? Если у меня выделено две папки, то в ListBox надо добавить адрес одной и адрес второй.


LiveSoft   (2006-05-26 02:34:00) [7]

Спасибо! Но как программе узнать, адреса каких именно файлов я хочу занести в неё? Я-то вижу, какие файлы выделил, а как это может увидеть программа?


GanibalLector   (2006-05-24 09:21:00) [8]

ParamCount&ParamStr


Наверх

Титульная страница Поиск, карта сайта Написать письмо