Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Shell bővítménykezelő objektumát regisztrálni kell, mielőtt a Shell használni tudja. Ez a témakör a Shell-bővítménykezelő regisztrálásának általános ismertetését ismerteti.
Minden alkalommal, amikor létrehoz vagy módosít egy Shell-bővítménykezelőt, fontos értesíteni a rendszert arról, hogy módosítást hajtott végre. Ehhez hívja meg SHChangeNotify, és adja meg a SHCNE_ASSOCCHANGED eseményt. Ha nem hívja meg SHChangeNotify, előfordulhat, hogy a rendszer újraindításáig a rendszer nem ismeri fel a módosítást.
A Windows 2000 rendszerekre további tényezők vonatkoznak. Részletekért lásd a(z) Shell-bővítménykezelők regisztrálása Windows 2000 rendszereken szakaszt.
Mint minden COM-objektum esetében, a kezelőhöz is létre kell hoznia egy GUID azonosítót egy olyan eszközzel, mint a Guidgen.exe, amelyet a Windows Software Development Kit (SDK) biztosít. Hozzon létre egy alkulcsot HKEY_CLASSES_ROOT\CLSID alatt, amelynek a neve az adott GUID szöveges formája. Mivel a Shell-bővítménykezelők folyamaton belüli kiszolgálók, a GUID alkulcs alatt létre kell hoznia egy InprocServer32 alkulcsot is, amelynek (alapértelmezett) értéke a kezelő DLL-jének elérési útja. Használja az apartman szálkezelési modellt. Itt látható egy példa:
HKEY_CLASSES_ROOT
CLSID
{00021500-0000-0000-C000-000000000046}
InprocServer32
(Default) = %windir%\System32\Example.dll
ThreadingModel = Apartment
Amikor a Shell olyan műveletet hajt végre, amely magában foglal egy Shell-bővítménykezelőt, ellenőrzi a beállításjegyzék megfelelő alkulcsát. Az alkulcs, amely alatt a bővítménykezelő regisztrálva van, határozza meg, mikor kerül meghívásra. Például általános gyakorlat, hogy egy gyorsmenükezelőt hívunk meg, amikor a Shell megjelenít egy helyi menüt egy fájltípusú tag számára. Ebben az esetben a kezelőt a fájltípus ProgID alkulcsában kell regisztrálni.
Ez a témakör a következő témákat ismerteti:
- a kezelők nevei
- Előre definiált rendszerhéjobjektumok
- Kiterjesztéskezelő regisztrációjának példája
- Kapcsolódó témakörök
Kezelők nevei
A Shell-kiterjesztés kezelő engedélyezéséhez hozzon létre egy alkulcsot a kezelő nevével a ShellEx alkulcs alatt, akár a ProgID (fájltípusok esetén), akár a Shell-objektumtípus neve (predefined_shell_objects) alatt.
Ha például egy helyi menükiterjesztés-kezelőt szeretne regisztrálni a MyProgram.1-hez, először hozza létre a következő alkulcsot:
HKEY_CLASSES_ROOT
MyProgram.1
ShellEx
ContextMenuHandlers
A következő kezelők esetén hozzon létre egy alkulcsot a "Kezelő alkulcs neve" megnevezésű alkulcs alatt, amely a Shell-bővítmény osztályazonosítójának (CLSID) sztringverziója. Több bővítmény regisztrálható a kezelő alkulcsának neve alatt több alkulcs létrehozásával.
| Kezelő | Interfész | Kezelő alkulcsának neve |
|---|---|---|
| Oszlopszolgáltató kezelője | IColumnProvider | Oszlopkezelők |
| Gyorsmenü kezelő | IContextMenu | ContextMenüKezelők |
| Copyhook kezelő | ICopyHook | CopyHookHandlers |
| Húzás és ejtés kezelő | IContextMenu | DragDropHandlers |
| Tulajdonságlap-kezelő | IShellPropSheetExt | PropertySheetHandlers |
A következő kezelők esetében a "Kezelő alkulcsának neve" kulcs alapértelmezett értéke a Shell-bővítmény CLSID-azonosítójának sztringverziója. Ezekhez a kezelőkhöz csak egy bővítmény regisztrálható.
| Kezelő | Interfész | Kezelő alkulcsának neve |
|---|---|---|
| Adatkezelő | IDataObject | DataHandler |
| Eldobási kezelő | IDropTarget | DropHandler |
| Ikonkezelő | IExtractIconA/W | IconHandler |
| Miniatűr képkezelő | IThumbnailProvider | {E357FCCD-A995-4576-B01F-234630154E96} |
| Infotip kezelő | IQueryInfo | {00021500-0000-0000-C000-0000000046} |
| Parancsértelmező hivatkozás (ANSI) | IShellLinkA | {000214EE-0000-0000-C000-000000000046} |
| Shell-hivatkozás (UNICODE) | IShellLinkW | {000214F9-0000-0000-C000-000000000046} |
| Strukturált tárolás | IStorage | {0000000B-0000-0000-C000-000000000046} |
| Metaadatok | IPropertySetStorage | PropertyHandler |
| Rögzítés a Start menübe | IStartMenüRögzítettLista | {a2a9545d-a0c2-42b4-9708-a0b2badd77c8} |
| Rögzítés a tálcán | {90AA3A4E-1CBA-4233-B8BB-535773D48449} |
Az Rögzítés a Start menübe és a Rögzítés a tálcára opciók elemek helyi menüjébe való rögzítéshez szükséges alkulcsok csak azokhoz a fájltípusokhoz szükségesek, amelyek tartalmazzák az IsShortCut bejegyzést.
Előre definiált rendszerhéjobjektumok
A Shell további objektumokat határoz meg a HKEY_CLASSES_ROOT alatt, amelyek ugyanúgy bővíthetők, mint a fájltípusok. Ha például minden fájlhoz hozzá szeretne adni egy tulajdonságlapkezelőt, regisztrálhat a PropertySheetHandlers alkulcs alatt.
HKEY_CLASSES_ROOT
*
shellex
PropertySheetHandlers
Az alábbi táblázat a HKEY_CLASSES_ROOT különböző alkulcsait tartalmazza, amelyek alatt a bővítménykezelők regisztrálhatók. Vegye figyelembe, hogy számos bővítménykezelő nem regisztrálható az összes felsorolt alkulcs alatt. További részletekért tekintse meg az adott kezelő dokumentációját.
| Alkulcs | Leírás | Lehetséges kezelők |
|---|---|---|
| * | Minden fájl | Gyorsmenü, tulajdonságlap, parancsok (lásd alább) |
| ÖsszesFájlrendszerObjektum | Minden fájl és fájlmappák | Helyi menü, tulajdonságlap, igék |
| mappa | Minden mappa | Helyi menü, tulajdonságlap, igék |
| Címtár | Fájlmappák | Helyi menü, tulajdonságok lapja, igék |
| Címtár\Háttér | Fájlmappa háttere | Helyi menü csak |
| DesktopBackground | Asztali háttér (Windows 7 vagy újabb) | Gyorsmenü, igék |
| Meghajtó | A MyComputer összes meghajtója, például a "C:\" | Helyi menü, tulajdonságpanel, parancsok |
| hálózat | Teljes hálózat (a Saját hálózati helyek alatt) | Helyi menü, tulajdonságlap, igék |
| Network\Type\# | Minden# típusú objektum (lásd alább) | Helyi menü, tulajdonságlap, igék |
| NetShare | Minden hálózati megosztás | Gyorsmenü, tulajdonságlap, igék |
| NetServer | Minden hálózati kiszolgáló | Gyorsmenü, tulajdonságpanel, ige |
| hálózat szolgáltató neve | A hálózati szolgáltató által biztosított összes objektum : "network_provider_name" | Helyi menü, tulajdonságlap, igék |
| nyomtatók | Minden nyomtató | Helyi menü, tulajdonságlap |
| AudioCD | Hang CD CD-meghajtón | Csak igék |
| DVD | DVD-meghajtó (Windows 2000) | Gyorsmenü, Tulajdonságpanel, Műveletek |
Jegyzetek
- A fájlmappa háttérmenüjét úgy érheti el, hogy a jobb gombbal kattint egy fájlmappában, de nem a mappa tartalmának egyikére sem.
- Az "Igék" az HKEY_CLASSES_ROOT\Alkulcs\Shell\Verbalatt regisztrált speciális parancsok.
- A Hálózati\Típus\#esetén a "#" egy hálózati szolgáltató típuskódja decimálisan. A hálózati szolgáltató típuskódja egy hálózati típus magas szava. A hálózattípusok listáját a Winnetwk.h fejlécfájl tartalmazza (WNNC_NET_* értékek). Például a WNNC_NET_SHIVA 0x00330000, így a megfelelő típus alkulcsa HKEY_CLASSES_ROOT\Hálózat\Típus\51.
- A "network_provider_name" a WNetGetProviderNameáltal megadott hálózati szolgáltatónév, a szóközöket aláhúzásjelekké alakítva. Ha például a Microsoft hálózati szolgáltató telepítve van, a szolgáltató neve "Microsoft Windows Network", a megfelelő network_provider_name pedig Microsoft_Windows_Network.
Példa a bővítménykezelő regisztrációjára
Egy adott kezelő engedélyezéséhez hozzon létre egy alkulcsot a bővítménykezelő típusú alkulcs alatt a kezelő nevével. A Shell (Felhasználói felület) nem használja a kezelő nevét, de az adott alkulcs típus alatt lévő összes többi névtől eltérőnek kell lennie. Állítsa be a név alkulcsának alapértelmezett értékét a kezelő GUID-azonosítójának sztring formájára.
Az alábbi példa a helyi menüt és a tulajdonságlapkiterjesztés-kezelőket engedélyező beállításjegyzék-bejegyzéseket mutatja be egy példa .myp fájltípus használatával.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
CLSID
{00000000-1111-2222-3333-444444444444}
InProcServer32
(Default) = C:\MyDir\MyCommand.dll
ThreadingModel = Apartment
{11111111-2222-3333-4444-555555555555}
InProcServer32
(Default) = C:\MyDir\MyPropSheet.dll
ThreadingModel = Apartment
MyProgram.1
(Default) = MyProgram Application
Shellex
ContextMenuHandler
MyCommand
(Default) = {00000000-1111-2222-3333-444444444444}
PropertySheetHandlers
MyPropSheet
(Default) = {11111111-2222-3333-4444-555555555555}
Kapcsolódó témakörök