AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Programm soll über Kontext-menü Prozedur ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Radon · begonnen am 2. Aug 2006 · letzter Beitrag vom 29. Okt 2006
Antwort Antwort
Benutzerbild von Radon
Radon

Registriert seit: 15. Mai 2006
29 Beiträge
 
#1

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

  Alt 2. Aug 2006, 19:30
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
  Mit Zitat antworten Zitat
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, 20: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
Benutzerbild von Radon
Radon

Registriert seit: 15. Mai 2006
29 Beiträge
 
#3

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

  Alt 2. Aug 2006, 20:19
Hört sich ja schonmal brauchbar an. Danke!

Nur, wie verknüpfe ich das mit meinem Programm?

Oder ist der Code schon fumktional so?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 2. Aug 2006, 20:22
Zitat von Radon:
Hört sich ja schonmal brauchbar an. Danke!

Nur, wie verknüpfe ich das mit meinem Programm?

Oder ist der Code schon fumktional so?
Du schreibst ja den Pfad und Namen deines Programmes in die Registry, dadurch wird dein Programm mit der datei als Parameter dann aufgerufen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Radon
Radon

Registriert seit: 15. Mai 2006
29 Beiträge
 
#5

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

  Alt 2. Aug 2006, 20:34
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 2. Aug 2006, 20:43
Delphiprogramme erhalten ihre Parameter über den Array ParamStr wobei Index 0 die Exe ist und ab 1 die weiteren Parameter.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Radon
Radon

Registriert seit: 15. Mai 2006
29 Beiträge
 
#7

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

  Alt 3. Aug 2006, 11:41
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?
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#8

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

  Alt 29. Okt 2006, 18:50
Zitat von Alien426:
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).
Da gibt es nur ein Problem, auf meinem Notebook z.B. gibt es HKEY_CLASSES_ROOT\*\shell gar nicht, sondern nur HKEY_CLASSES_ROOT\*\shellex. Ist es egal wo ich da reinschreibe?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz