Einzelnen Beitrag anzeigen

teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#9

Re: Explorer Kontext Menu Handler geht nicht unter XP/Vista

  Alt 15. Okt 2007, 20:00
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:
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;
Bei Gleichheit bist Du im Startmenü und gehst mit Result := E_FAIL; und aus der Funktion raus und nix passiert.

Gruß, teebee
  Mit Zitat antworten Zitat