![]() |
Explorer Kontext Menu Handler geht nicht unter XP/Vista
Hallo,
ich bin ein wenig verwirrt.. :wall: Ich habe das Tutorial von Dirk Frischalowski zum Thema "Delphi-Tutorial - Kontextmenü für Windows-Explorer" ![]() Doch dann passiert nix. Ich habe weder in den Kontextmenüs der Verzeichnisse noch von allen möglichen Dateien einen neuen Menüpunkt. Erst dachte ich, ist zu altes Zeug und das geht so nicht mehr, doch ein Test unter Win 2000 mit der gleichen, neu erzeugten DLL, funktionierte einwandfrei. Nur unter XP und unter Vista gibt es keinen Menueintrag? Hat jemand schon mal versucht dieses Tutorial bzw. die Downloaddateien zu übersetzen und hatte den gleichen Fehler? Liegt es vielleicht an Delphi 2007? Das Metarial wurde wohl für Delphi 5 erstellt. Gruß, Der Alex |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Liste der Anhänge anzeigen (Anzahl: 1)
Nö, also bei mir läuft es ohne Probleme mit XP. Für Vista muss ich es mal testen.
Anbei meine Version, etwas überarbeitet: |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Hallo turboPASCAL,
danke für deine optimierte Fassung, doch auch diese zeigt bei mir das gleiche Verhalten, ist also nicht sichtbar. Ich hab gestern mal ein wenig herumprobiert und habe festgestellt, dass im Kontextmenü des Start-Buttons der Eintrag zu sehen ist, auch wenn ich ihn dort gar nicht brauchen kann, da ich nur beliebig viele Dateien und Verzeichnisse an meine Anwendung weitergeben will und das beim Startbutton nicht der Fall ist oder hab ich da einen Denkfehler?!? Wie auch immer, ich kam also auf die Idee nach einem "Störer" zu suchen, der auf allen Testmaschinen bei mir vorhanden ist, auf dem Win 2000 System aber nicht. Mir ist da nur einer aufgefallen, der G DATA AntiVirus Client, der ebenfalls in das Menü einen Eintrag zum Scannen der Dateien einbaut. Ich hab daraufhin zum Test in einer VMware eine Win 2003 Server Version ohne AntiVirus mit der selbsterstellten DLL beglückt und siehe da, die Menüpunkte sind zu sehen! Dann hab ich nachträglich den AV-Client installiert und sie waren wieder weg, bis auf den Eintrag im Startbutton, dort ist aber auch kein Eintrag vom AV-Client! Hmmm, kann es sein, dass sich die beiden Kontexthandler gegenseitig stören und meiner den Kürzeren zieht? Hat jemand schon mal das Problem? Oder eine Idee, wie man das lösen kann? Danke, Alex |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Hallo,
in der Hoffnung das es jemanden interessiert. :-D Ich hab mal die G DATA DLL entregistriert und dann auch meine DLL, danach zuerst meine DLL wieder registriert und alle Einträge waen da. Dann hab ich die G DATA DLL wieder registriert und siehe da, die DFKontextMenu-Einträge waren wieder verschwunden. Gibt da ne Möglichkeit, dass sich zwei Kontextmenu-Händler gegenseitig verdecken? Nochmal der Hinweis, ich nehme die Original-Dateien von Dirk Frischalowskis Tutorial bzw. die von turboPASCAL, hab da nix verändert?! Ich wäre über konstruktive Vorschläge sehr dankbar. Gruß, Alex |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Schmeiss
![]() |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
He, He... ;-)
Wenn das mal so einfach wäre, es handelt sich um die Client/Server-Version der AV-Software und die ist hier überall drauf und war auch nicht gerade billig. Außerdem muss ich damit rechnen, dass bei den Anwendern meiner Software, für die ich diesen Kontext-Händler zukünfig gern mal einsetzen würde, auch die AV-Software von G DATA verwenden. :-( Eventuell machen das, was die G DATA Software macht, ja auch andere Anwendungen und dann funktioniert die Delphi-Variante dort nie?! Gruß, Alex |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Schau Dir mal mein Posting
![]() Es kommt auf den richtigen Rückgabewert der Funktion QueryContextMenu an, der IMO in dem Tutorial falsch ist. Ob dieser Wert korrekt ist, stellt sich erst heraus, wenn mehrere Handler sich für den gleichen Dateityp registrieren. Deshalb klappt es, sobald Du den anderen Handler "deregistrierst". Gruß, teebee |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Bingo teebee!! Genau so ist es...!
Man, da hätte ich ja lange suchen können, einfach aus der 4 'ne 5 und schon zählt er richtig. Der "ungenützte" Untermenüpunkt muss auch mitgezält werden, auch wenn er selbst keine Funktion hat. Das Menü ist jetzt in allen Lebenslagen sichtbar, auch mit aktivem G DATA AV! Super! Dafür erst einmal ein Herzliches Dankeschön an teebee und turboPASCAL, ohne euch wäre ich wohl der Verzweifelung nahe gewesen. ;-) Eine Kleinigkeit hab ich noch. Das Logo ist auch im Kontextmenu des Startbuttons sichtbar, da wird mir dann das Verzeichnis des Startnenüs übergeben, also C:\DuE\User\Startmenü. Kann man das hier verhindern, ohne dass es dann gleich für alle Verzeichnisse entfernt wird? Die G DATAs haben das so hinbekommen. Das Problem ist eben nur, dass der Menüeintrag dort keinen Sinn für meine Anwendung macht. Gruß und Danke nochmal, Alex |
Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista
Der Funktion IShellExtInit.Initialize (im Tutorial TDFKontextMenuShellExt.SEInitialize) wird ein PIDL auf den Ordner übergeben, in dem die Aktion stattfindet. Mit der Funktion SHGetSpecialFolderLocation kannst Du die IDL für z.B. das Startmenü (CSIDL_STARTMENU) herausfinden (Achtung: IDL hinterher freigeben nicht vergessen!)
Jetzt hast Du zwei IDL, die Du vergleichen musst: Du holst Dir ein IShellFolder-Interface mit SHGetDesktopFolder, davon verwendest Du die Methode CompareIDs mit den beiden IDL (die übergebene und die ermittelte), und schaust, ob sie gleich sind.
Delphi-Quellcode:
Bei Gleichheit bist Du im Startmenü und gehst mit Result := E_FAIL; und aus der Funktion raus und nix passiert.
Function DoIDLEqual(pidl1: PItemIDList; pidl2: PItemIDList): Boolean;
var df: IShellFolder; Begin Result := False; If SHGetDesktopFolder(df)=NOERROR Then Result := (df.CompareIDs(0,pidl1,pidl2)=0); End; Gruß, teebee |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 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