![]() |
Programm soll über Kontext-menü Prozedur ausführen
Hi
Ich -hoffe- die Frage gibts noch nicht.. Ich habe ein kleines Programm welches Daten shreddert. Dabei öffnet man dieses, über Durchsuchen kann man eben eine Datei öffnen, und eine Art Sicherheitsstufe auswählen, wie oft der File überschrieben werden soll. Soweit dazu. Nun will ich das so einrichten, dass man über das Rechtsklick-Kontextmenü einen File auch shreddern kann, ohne extra das Programm öffnen zu müssen. Dazu müsste das Programm gestartet werden, mit 2 Informationen, die mitgesendet werden sollen. Erstmal der Filename, der sich ja aus dem angeklickten File ergibt, und der Sicherheitsstufe, die einfach einen Standartwert bekommt. Ist das irgendwie machbar? Sorry, bin Anfänger :oops: |
Re: Programm soll über Kontext-menü Prozedur ausführen
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:
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.
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); |
Re: Programm soll über Kontext-menü Prozedur ausführen
Hört sich ja schonmal brauchbar an. Danke!
Nur, wie verknüpfe ich das mit meinem Programm? Oder ist der Code schon fumktional so? |
Re: Programm soll über Kontext-menü Prozedur ausführen
Zitat:
|
Re: Programm soll über Kontext-menü Prozedur ausführen
Jau, soweit erkenn ich das auch. Das Programm wird dann gestartet und hat einen Parameter bekommen. Wie krieg ich das Programm jetzt dazu, den Parameter zu nehmen, ihn der rrichtigen Variable zuzuweisen und die entsprechende Hauptprozedur zu starten?
|
Re: Programm soll über Kontext-menü Prozedur ausführen
Delphiprogramme erhalten ihre Parameter über den Array ParamStr wobei Index 0 die Exe ist und ab 1 die weiteren Parameter.
|
Re: Programm soll über Kontext-menü Prozedur ausführen
okay. das heißt also ich müsste es so angehn: das Programm startet und überprüft, ob ParamStr(1) einen Wert hat. Wenn nicht, dann folgt das normale Programm. Wenn es einen Wert hat, dann soll er ohne das MainForm sichtbar zu machen eine andere Prozedur starten, die dann den ParamStr(1) = Filename zur weiteren benutzung gebraucht? Seh ich das richtig?
|
Re: Programm soll über Kontext-menü Prozedur ausführen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz