Einzelnen Beitrag anzeigen

Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Programm soll über Kontext-menü Prozedur ausführen

  Alt 2. Aug 2006, 19:01
Du kannst in der Registry unter HKEY_CLASSES_ROOT\*\shell\PROGRAMMNAME einen Standardwert (Zeichenfolge mit leerem Namen) mit dem Text erzeugen, der dann im Kontextmenü angezeigt werden soll. Unter HKEY_CLASSES_ROOT\*\shell\PROGRAMMNAME\command steht dann im Standardwert der Pfad zu deinem Programm und die Parameter, die übergeben werden (%1 für den Pfad der Datei, die gewählt wurde).

Delphi-Quellcode:
Reg := TRegistry.create;
try
  Reg.RootKey := HKEY_CLASSES_ROOT;
  if Reg.KeyExists('\*\shell\TEST') then
  begin
    TheMessage := 'Not all Registry entries were removed successfully.';
    if Reg.DeleteKey('\*\shell\TEST') then
      TheMessage := 'All Registry entries removed successfully.';
  end
  else
  begin
    TheMessage := 'Not all Registry entries were created successfully.';
    if Reg.OpenKey('\*\shell\TEST', true) then
      Reg.WriteString('', 'Shreddern...');
      if Reg.OpenKey('\*\shell\TEST\command', true) then
      begin
   Reg.WriteString('','"' + ParamStr(0) + '" "%1"');
   TheMessage := 'All Registry entries created successfully.';
      end;
  end;
finally
  Reg.CloseKey;
  Reg.Free;
end;
ShowMessage(TheMessage);
Für mehrere Sicherheitsstufen musst du wahrscheinlich mehrere Einträge anlegen. Statt * (alle Dateien) kannst du auch einen bestimmten Dateityp oder "Directory" für Ordner und "Drive" für Laufwerke benutzen.
  Mit Zitat antworten Zitat