Witam!
Jak dodać pozycję do menu kontekstowego windows i jak zorganizować żeby po kliknieciu wykonać jakąś procedurę?
Chodzi mi tu o coś takiego jak np. mają programy antywirusowe, że po kliknięciu prawym na jakimś pliku mamy 'skanuj plik' a po wybraniu tego program skanuje :-)
Pozdrawiam
Grzegorz
0
0
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;
O to chodziło ? [soczek]
0
Proponowałbym ładnie to przepisać i dać do FAQ.
0
dokładnie o to :-)
potrzebuje tylko do plików a odpowiedź jest wyczerpująca
dzięki i pozdrawiam
Grzegorz
0
W tym przykładzie pozycja się pojawia w menu ale po wybraniu wyskakuje komunikat: Odmowa dostępu.
Kombinuję i nie wiem co z tym zrobić.
Jak tego popranie użyć żeby np. skasować plik?
pzdr
Grzegorz
0
Zamiast
Reg.WriteString('','"'+Application.ExeName+'" "%1"');
powinno być:
Reg.WriteString('', Application.ExeName + ' %1');
Coyote znowu ma problemy z wyświetlaniem " :/ .
0
dzięki przetestuję :-)