Jak zintegrować z menu kontekstowym swój program?

0

Mam na myśli tak jak to robią programy: WinZIp, WinRar, PA.

  • Jak zaznacze pliki i kliknę prawym przyciskiem na nie i kliknę na Compress, czy jakoś tak :) a compress odwołuje do programu (wysyła tam ścieżki tych plików)
    Jak to zrobić?
    Proszę o kod Delphi o ile jest taki potrzebny!
0

można zrobić zapisując się do rejestru do rozszerzenia pod kluczem Shell\costam\command i potem nazwe pliku otrzymujesz pod ParamStr(1) ale jeśli chcesz tak jak np WinRAR że rozwija się menu i są ikonki to musisz pokombinować, albo użyć np płatnego komponentu Shell+

zapis w rejestrze (kod przy jakimś np buttonie przypisz lub w oncreate np):

uses Registry;
var rejestr:TRegistry;rozsz,temp:string;
begin
 rozsz:='txt'; // do plików z rozszerzeniem txt
 rejestr:=TRegistry.Create;
 rejestr.RootKey:=HKEY_CLASSES_ROOT;
 rejestr.OpenKey('.'+rozsz,true);  if not ValueExists('') then rejestr.WriteString('',rozsz+'file');
 temp:=rejestr.ReadString('');
 rejestr.CloseKey;
 rejestr.OpenKey(temp+'\shell\mojprogram',true);
 rejestr.WriteString('','Otwórz za pomocą mojego programu');
 rejestr.OpenKey(temp+'\shell\mojprogram\command',true);
 rejestr.WriteString('','"'+ParamStr(0)+'" "%1"');
 rejestr.CloseKey;
 rejestr.Free;
end;

a potem jak chcesz się odwołać do pliku który w ten sposób otworzono (np w oncreate):

var plik:TextFile;
begin
 if ParamCount<1 then Halt; // jeśli nie wywołano z menu kontekstowego (znaczy sie nie ma parametrów bo można też ręcznie wywołać)
 Memo1.Lines.LoadFromFile(ParamStr(1)); // władowanie pliku do memo
end;

kod pisałem z głowy to <ort>na pewno</ort> ma błędy, ale mniej/więcej zarys jest taki :)

0

Platform SDK -> Shell Extensions

1 użytkowników online, w tym zalogowanych: 0, gości: 1