Witam...
Od dluzszego czasu probuje wykombinowac sposob przekazania paramteru
z poziomu menu kontekstowego Windowsa do mojej aplikacji (głownie chodzi mi tylko o sciezke ) tzn:
poslugujac sie tym kodem.. bodajrze napisanego przez Olesio:
uses Registry;
var
Reg : TRegistry;
begin
try
Reg := TRegistry.Create; // otworz rejestr
try
// zapis integracji z systemem Windows
if CheckBox1.Checked = true then
begin
// dla Folderów , Dysków , wszystkich plików
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey('\Directory\shell\NAZWA_WPISU\command',true);
Reg.WriteString('','"'+Application.ExeName+'" "%1"');
Reg.OpenKey('\Drive\shell\NAZWA_WPISU\command',true);
Reg.WriteString('','"'+Application.ExeName+'" "%1"');
Reg.OpenKey('\*\shell\NAZWA_WPISU\command',true);
Reg.WriteString('','"'+Application.ExeName+'" "%1"');
Reg.CloseKey;
end
else
// usunięcie menu kontekstowego
if CheckBox1.Checked = false then
begin
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.DeleteKey('\Directory\shell\NAZWA_WPISU\command');
Reg.DeleteKey('\Directory\shell\NAZWA_WPISU');
Reg.DeleteKey('\Drive\shell\NAZWA_WPISU\command');
Reg.DeleteKey('\Drive\shell\NAZWA_WPISU');
Reg.DeleteKey('\*\shell\NAZWA_WPISU\command');
Reg.DeleteKey('\*\shell\NAZWA_WPISU');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
Application.MessageBox('Ustawiono menu kontekstowe.',MB_Ok + MB_IconInformation);
except
Application.MessageBox('Błąd dostępu do rejestru. Nie masz uprawnień Administratora ?!','Błąd',MB_Ok + MB_IconStop);
end;
end;
// użycie parametru (po kliknięciu w menu kontekstowym)
procedure TSearchForm.FormShow(Sender: TObject);
begin
if ParamCount > 0 then Label1.Caption := ParamStr(1);
{
jezeli uzytkownik kliknie na menu - otworz program
i pokaż w Label1 nazwę ścieżki do pliku, folderu lub dysku - pobranego
przez (paramstr)
}
end;
wszystko ladnie smiga, ale jak widac ten kod otwiera od nowa aplikacje.. i w zdarzeniu OnShow przekazuje paramter..
a ja chce przelazac paramter do wlaczonej juz aplikacji.. i tu mam problem../
poszperalem w google i demos-ach Delphi i znalalzem w Demos\ActiveX\ShellExt
kod contmenu.dpr ktory tworzy biblioteke.. .dll tylko z uzyciem jej nie umiem sobie poradzic..
pewnie trzeba odwolac sie do:
TContextMenu.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult;
Prosze o pomoc..
Pozdrawiam..