![]() |
Eintrag in Context Menu
Hallo alle zusammen, folgende Frage:
Hab schon gesucht aber keinen verwertbaren Source gefunden :( Ich bastle an einem Programm das Dateien sicher und unwiederherstellbar löschen soll (Gutmann oder US DoD Methode). Dazu ist es nötig einen Eintrag ins Context Menu zu machen. Beim Rechtsklick auf eine Datei oder Ordner soll im Context Menu z.B. "sicher löschen mit xyz" erscheinen... 2 Fragen: 1. wie bekomme ich den Eintrag ins Context Menu 2. wie funktioniert die Übergabe odes Ordners oder Dateinamens an mein Programm ? Danke für Eure Hilfe :) |
Re: Eintrag in Context Menu
Forensuche -> "Kontextmenü" liefert zum Beispiel das:
![]() |
Re: Eintrag in Context Menu
hmm das hab ich schon gesehen, nur leider kann ich damit wenig anfangen... wenn ich alles 100%ig wüsste dann würde ich nicht in einem Forum fragen wie es funktioniert oder ?
Das Du suchen kannst weiß ich mittlerweile *gg*... Ich bin kein Delphi Vollprofi und wäre für ein wenig Source schon sehr dankbar :) |
Re: Eintrag in Context Menu
Hm, woher soll ich wissen, ob du damit was anfangen kannst oder nicht? Ich kenne deinen Wissensstand nicht.
Desweiteren wäre es hilfreich, wenn du mal etwas präziser wirst, warum du damit nicht klar kommst. Um an die Datei dranzukommen, die dir übergen wird kuck dir mal paramStr und ParamCount an. |
Re: Eintrag in Context Menu
Auf dieser Seite kannst Du Dir die Sourcen von Macro Cantù's Buch "Mastering Delphi 5" runter laden.
![]() Ca. in Kapitel 15 hat er das Thema ausführlich besprochen. Die Demo findest Du im entsprechenden Verzeichnis. ...:cat:... |
Re: Eintrag in Context Menu
also ich habe das programm fast fertig :)
habe die Komponente von ![]() benutzt... Nur ein Problem ... wie ich die Dateiendung z.B. "blabla.xyz" für mein programm registriere ist klar das funzt auch aber wie bekomme ich es hin das ordner und sämtliche anderen dateien damit gelöscht werden können ? ich meine wenn ich auf *.txt klicke soll im kontextmenu ebenfalls mein programm angezeigt werden... |
Re: Eintrag in Context Menu
Das ist der falsche Weg. Hast du mal in dem Demo-Ordner gekuckt, auf den Christian Seehase in dem von mir verlinkten Thread verwiesen hat? Das macht genau das, was du willst.
|
Re: Eintrag in Context Menu
Du musst Deine COM-Komponente nicht für eine bestimmte Endung sondern beim Reg-Eintrag "*" (dem ersten) eintragen.
...:cat:... |
Re: Eintrag in Context Menu
ahhja... und wie ?
|
Re: Eintrag in Context Menu
Im Schlüssel HKCR\*\shellex\ContextMenuHandlers\ legst Du einen Schlüssel für Deine Software an. Als Standard-Wert (Name ist ein leerer String) speicherst Du die GUID Deines Handlers.
...:cat:... |
Re: Eintrag in Context Menu
jetzt willste mich aber rollen oder ???
Das sehe ich in der Registry auch aber ich weiß nicht wie man den Schlüssel dort anlegt und was genau dort drinstehen muss... Man man man nu macht es doch nicht so schwer, Ihr wisst doch offensichtlich wie es geht was ist so schwer daran den Source rauszurücken ??? Ich sitze den ganzen Tag schon an dem Mist und komm nicht weiter... |
Re: Eintrag in Context Menu
ok ich habs... danke trotzdem für eure hilfe ...
für alle die es mal suchen:
Code:
procedure TForm1.addClick(Sender: TObject);
var Reg:TRegistry; begin reg:=tregistry.create(); Reg.RootKey:=HKEY_CLASSES_ROOT; -> Reg.OpenKey('*\shell',true); // wird das benötigt ??? -> Reg.CloseKey; Reg.OpenKey('*\shell\'+Name,true); Reg.WriteString('',Title);//optional Reg.CloseKey; Reg.OpenKey('*\shell\'+Name+'\command',true); Reg.WriteString('',Adress); // adress="c:\test\meinprogramm.exe %1" Reg.CloseKey; reg.free; end; 2 Fragen hab ich aber noch :) 1. die oben gezeigt stelle mit -> wird die benötigt ? 2. wie kann ich den eintrag wieder löschen ? |
Re: Eintrag in Context Menu
Immer mit der Ruhe. Ich wusste ja nicht, wo Dein Problem lag. Ich hatte vermutet, das die Regsitry zu nutzen nicht das Probem sei ;-)
1. Ist nicht nötig. 2. Den übergeordneten Reg-Pfad öffnen und mit DeleteKey den gewünschten Eintrag entfernen. ...:cat:... |
Re: Eintrag in Context Menu
ok das geht ...
Code:
ich wusste nicht mehr ob shell vorher da war oder nicht...
begin
reg:=tregistry.create(); Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.DeleteKey('*\shell\'); reg.free; end; ok für einzelne datein funktioniert es jetzt aber wie kann ich es in der registry eintragen das ich auch ordner damit aufrufen kann ? |
Re: Eintrag in Context Menu
Du solltest nicht gerade den Shell Eintrag löschen, da auch andere Apps (WinZIP; ICQ, ...) dort registriert sind.
Betreffs der Folder kann ich leider momentan nicht helfen, aber bei MSDN wirst Du bestimmt den Tipp finden. ...:cat:... |
Re: Eintrag in Context Menu
hmm ich hab auf beiden pcs WIN XP und hab jetzt gearde ma auf meinem anderen rechner geschaut der hat den shell ordner dort auch nicht, da ist und war auf meinem PC auch nichts weiter drin ...
also den drin lassen oder wie ists am besten ? |
Re: Eintrag in Context Menu
Auf jeden Fall nur dann löschen, wenn nichts drinne ist. Bei mir sind 5 Einträge drin. Wäre schade, wenn die weg wären ;-)
...:cat:... |
Re: Eintrag in Context Menu
Zitat:
|
Re: Eintrag in Context Menu
ok ich habs so geändert:
Code:
begin
reg:=tregistry.create(); Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.OpenKey('*\shell',false) then begin Reg.DeleteKey(Name); Reg.CloseKey; end; reg.free; end; und gleich das nächste problem, wenn ich mehr als eine datei aufrufe sollen diese natürlich auch von meinem programm geööfnet werden paramstr(0) und paramstr(1) enthalten die daten mein programm startet aber bei 3 dateien dann 3x :( ??? es soll aber nur 1x starten und die anderen dateien ebanfalls bearbeiten... |
Re: Eintrag in Context Menu
neue FRage neuer Thread ;-)
PS: Such mal in der code-Library, da steht irgendwo wie man es hinbekommt, dass die Anwendung nur einmal gestartet werden kann, dann musst du halt noch eine Message an dein Programm schicken (also praktisch von deinem Programm, das wieder beendet wird, zu deinem Programm, was weiter laufen soll.., um die Dateien zu übergeben. |
Re: Eintrag in Context Menu
wegen dem Ordner:
ich weiß nicht ob es dir hilft aber probiers vielleicht mal mit HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandle rs viel spaß noch... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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-2025 by Thomas Breitkreuz