![]() |
Shell Extension Menü
Also ich hab grad mal versucht eine Shell Extension zu erstellen und mit einer extra Komponente klappt das auch ;) Nun möchte ich das aber per Hand machen und ich habe mir dazu Luckies DLL inkl. Source genommen... Leider sehe ich absolut net durch ;) Wie krieg ich denn diese GUID raus? Die ist doch dazu da, um die Schnittstelle vom Programm zu geben oder? Sehr kompliziert das ganze ;)
|
Re: Shell Extension Menü
Die GUID musst du selbst definieren. Du darfst auf keinen Fall eine GUID verwenden, die bereits in einem Programm vorkam. Für jede Shell-Extension muss es eine eigene sein, sonst hast du hinterher ein Problem.
Aber IMHO kannst du dir die meiste Arbeit sparen, wenn du einfach Delphi startest und dann aus dem Menü "Neu -> ActiveX -> ActiveX-Bibliothek" wählst und dann mit "Neu -> ActiveX -> COM-Objekt" ein passendes Objekt erstellst. Das ist der übliche Weg, weil Delphi dabei im Hintergrund die notwendigen Bibliotheken (und auch GUIDs) anlegt. Dann arbeitest du los und entfernst am Ende nur die Units, die du nicht brauchst. Übrig bleiben in den meisten Fällen nur Windows, ActiveX, ComObj, ComSrv und Classes. Das sollte genügen um die Größe der DLL auf unter 100k zu drücken. |
Re: Shell Extension Menü
Delphi-Quellcode:
könnte mir jemand diesen code in pseudocode erklären? oben wird s ausgelesen und dann wird unten die GUID eingetragen das ist ja relativ verständlich (wenn es denn so ist)... was für mich aber im moment überhaupt nicht verständlich ist
procedure TUSBCryptExtFactory.UpdateRegistry(Register: Boolean);
var ClassID: string; rgHandle: HKEY; lpType, cbData: DWORD; s: string; begin s := ''; if RegOpenKeyEx(HKEY_CLASSES_ROOT, '.jpg', 0, KEY_READ, rgHandle) = ERROR_SUCCESS then // gibt ein handle zum .jpg Ordner zurück -> rgHandle begin try if RegQueryValueEx(rgHandle, '', nil, @lpType, nil, @cbData) = // irgendwas wird kopiert ERROR_SUCCESS then begin setlength(s, cbData); // get s RegQueryValueEx(rgHandle, '', nil, nil, @s[1], @cbData); setlength(s, cbData - 1); end; finally RegCloseKey(rgHandle); end; end; if Register then begin inherited UpdateRegistry(Register); ClassID := GUIDToString(GUID_USBCRYPT); CreateRegKey(s + '\shellex', '', ''); CreateRegKey(s + '\shellex\ContextMenuHandlers', '', ''); CreateRegKey(s + '\shellex\ContextMenuHandlers\USBCryptExt', '', ClassID); end else begin DeleteRegKey(s + '\shellex\ContextMenuHandlers\USBCryptExt'); inherited UpdateRegistry(Register); end; end; bei .jpg kommt der auf s = CLSID/OISjpegfile/shellex/ContextMenuHandlers Ich würde das gerne in * eintragen ;) |
Re: Shell Extension Menü
bäh ich komm nich weiter heul :( ich schau mir schon 3 h die demos an und suche lauter quellcode zeugs aber ich kriegs net gebacken das ordentlich in die registry einzutragen :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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