menu kontekstowe windows -dodawanie, jak?

0

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
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ę :-)

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