Membuat Handler Ekstensi Shell
Kemampuan Shell dapat diperluas dengan entri registri dan file .ini. Meskipun pendekatan untuk memperluas Shell ini sederhana, dan memadai untuk banyak tujuan, itu terbatas. Misalnya, jika Anda menggunakan registri untuk menentukan ikon kustom untuk jenis file, ikon yang sama akan muncul untuk setiap file jenis tersebut. Memperluas Shell dengan registri tidak memungkinkan Anda untuk memvariasikan ikon untuk file yang berbeda dengan jenis yang sama. Aspek lain dari Shell, seperti lembar properti Properti yang dapat ditampilkan saat file diklik kanan, tidak dapat dimodifikasi sama sekali dengan registri.
Pendekatan yang lebih kuat dan fleksibel untuk memperluas Shell adalah dengan mengimplementasikan penangan ekstensi shell. Handler ini dapat diimplementasikan untuk berbagai tindakan yang dapat dilakukan Shell. Sebelum mengambil tindakan, Shell meminta handler ekstensi, memberinya kesempatan untuk memodifikasi tindakan. Contoh umumnya adalah penangan ekstensi menu pintasan. Jika diimplementasikan untuk jenis file, itu akan dikueri setiap kali salah satu file diklik kanan. Handler kemudian dapat menentukan item menu tambahan berdasarkan file demi file, daripada memiliki set yang sama untuk seluruh jenis file.
Dokumen ini membahas cara mengimplementasikan penangan ekstensi yang memungkinkan Anda memodifikasi berbagai tindakan Shell. Handler berikut dikaitkan dengan jenis file tertentu dan memungkinkan Anda menentukan berdasarkan file-demi-file:
Penghandel | Deskripsi |
---|---|
Penangan menu pintasan | Dipanggil sebelum menu pintasan file ditampilkan. Ini memungkinkan Anda untuk menambahkan item ke menu pintasan berdasarkan file-demi-file. |
Penangan data | Dipanggil saat operasi seret dan letakkan dilakukan pada objek dragShell. Ini memungkinkan Anda untuk menyediakan format clipboard tambahan ke target penghilangan. |
Jatuhkan handler | Dipanggil saat objek data diseret atau dijatuhkan pada file. Ini memungkinkan Anda untuk membuat file menjadi target penghilangan. |
Handler ikon | Dipanggil sebelum ikon file ditampilkan. Ini memungkinkan Anda mengganti ikon default file dengan ikon kustom berdasarkan file demi file. |
Handler lembar properti | Dipanggil sebelum lembar properti Properti objek ditampilkan. Ini memungkinkan Anda untuk menambahkan atau mengganti halaman. |
Penangan Gambar Mini | Menyediakan gambar untuk mewakili item. |
Penangan infotip | Menyediakan teks pop-up saat pengguna mengarahkan penunjuk mouse ke atas objek. |
Penangan metadata | Menyediakan akses baca dan tulis ke metadata (properti) yang disimpan dalam file. Ini dapat digunakan untuk memperluas tampilan Detail, infotip, halaman properti, dan fitur pengelompokan. |
Handler lain tidak terkait dengan jenis file tertentu tetapi dipanggil sebelum beberapa operasi Shell:
Penghandel | Deskripsi |
---|---|
Penangan kolom | Dipanggil oleh Windows Explorer sebelum menampilkan tampilan Detail folder. Ini memungkinkan Anda untuk menambahkan kolom kustom ke tampilan Detail. |
Salin handler hook | Dipanggil ketika folder atau objek printer akan dipindahkan, disalin, dihapus, atau diganti namanya. Ini memungkinkan Anda menyetujui atau memveto operasi. |
Handler seret dan letakkan | Dipanggil ketika file diseret dengan tombol kanan mouse. Ini memungkinkan Anda untuk mengubah menu pintasan yang ditampilkan. |
Handler Overlay Ikon | Dipanggil sebelum ikon file ditampilkan. Ini memungkinkan Anda menentukan overlay untuk ikon file. |
Penangan pencarian | Dipanggil untuk meluncurkan mesin pencari. Ini memungkinkan Anda untuk mengimplementasikan mesin pencari kustom yang dapat diakses dari menu Mulai atau Windows Explorer. |
Detail cara mengimplementasikan handler ekstensi tertentu tercakup dalam bagian yang tercantum di atas. Sisa dokumen ini mencakup beberapa masalah implementasi yang umum untuk semua penangan ekstensi Shell.
- Menerapkan Handler Ekstensi Shell
- Meningkatkan Windows Search dengan Penangan Ekstensi Shell
- Mendaftarkan Handler Ekstensi Shell
- Topik terkait
Menerapkan Handler Ekstensi Shell
Sebagian besar implementasi objek handler ekstensi Shell tergantung pada jenisnya. Namun, ada beberapa elemen umum. Bagian ini membahas aspek implementasi yang dibagikan oleh semua penangan ekstensi Shell.
Banyak penangan ekstensi Shell adalah objek Model Objek Komponen (COM) dalam proses. Mereka harus diberi GUID dan terdaftar seperti yang dijelaskan dalam Mendaftarkan Penangan Ekstensi Shell. Mereka diimplementasikan sebagai DLL dan harus mengekspor fungsi standar berikut:
- DllMain. Titik masuk standar ke DLL.
- DllGetClassObject. Mengekspos pabrik kelas objek.
- DllCanUnloadNow. COM memanggil fungsi ini untuk menentukan apakah objek melayani klien mana pun. Jika tidak, sistem dapat membongkar DLL dan membebaskan memori terkait.
Seperti semua objek COM, handler ekstensi Shell harus mengimplementasikan antarmuka IUnknown dan pabrik kelas. Sebagian besar handler ekstensi juga harus mengimplementasikan antarmuka IPersistFile atau IShellExtInit di Windows XP atau yang lebih lama. Ini digantikan oleh IInitializeWithStream, IInitializeWithItem dan IInitializeWithFile di Windows Vista. Shell menggunakan antarmuka ini untuk menginisialisasi handler.
Antarmuka IPersistFile harus diimplementasikan dengan cara berikut:
- Penangan data
- Jatuhkan handler
Di masa lalu, handler ikon juga diharuskan untuk mengimplementasikan IPersistFile, tetapi ini tidak lagi benar. Untuk handler ikon, IPersistFile sekarang opsional dan antarmuka lain seperti IInitializeWithItem lebih disukai.
Antarmuka IShellExtInit harus diimplementasikan dengan cara berikut:
- Penangan menu pintasan
- Penangan seret dan letakkan
- Penangan lembar properti
Menerapkan IPersistFile
Antarmuka IPersistFile dimaksudkan untuk mengizinkan objek dimuat dari atau disimpan ke file disk. Ini memiliki enam metode selain IUnknown, lima dari sendiri, dan metode GetClassID yang diwarisi dari IPersist. Dengan ekstensi Shell, IPersist hanya digunakan untuk menginisialisasi objek handler ekstensi Shell. Karena biasanya tidak perlu membaca dari atau menulis ke disk, hanya metode GetClassID dan Load yang memerlukan implementasi nontoken.
Shell memanggil GetClassID terlebih dahulu, dan fungsi mengembalikan pengidentifikasi kelas (CLSID) dari objek handler ekstensi. Shell kemudian memanggil Muat dan meneruskan dua nilai. Yang pertama, pszFileName, adalah string Unicode dengan nama file atau folder tempat Shell akan beroperasi. Yang kedua adalah dwMode, yang menunjukkan mode akses file. Karena biasanya tidak perlu mengakses file, dwMode biasanya nol. Metode menyimpan nilai-nilai ini sesuai kebutuhan untuk referensi nanti.
Fragmen kode berikut menggambarkan bagaimana handler ekstensi Shell yang khas mengimplementasikan metode GetClassID dan Load . Ini dirancang untuk menangani ANSI atau Unicode. CLSID_SampleExtHandler adalah GUID objek handler ekstensi, dan CSampleExtHandler adalah nama kelas yang digunakan untuk mengimplementasikan antarmuka. Variabel m_szFileName dan m_dwMode adalah variabel privat yang digunakan untuk menyimpan nama file dan bendera akses.
wchar_t m_szFileName[MAX_PATH]; // The file name
DWORD m_dwMode; // The file access mode
CSampleExtHandler::GetClassID(CLSID *pCLSID)
{
*pCLSID = CLSID_SampleExtHandler;
}
CSampleExtHandler::Load(PCWSTR pszFile, DWORD dwMode)
{
m_dwMode = dwMode;
return StringCchCopy(_szFileName, ARRAYSIZE(m_szFileName), pszFile);
}
Menerapkan IShellExtInit
Antarmuka IShellExtInit hanya memiliki satu metode, IShellExtInit::Initialize, selain IUnknown. Metode ini memiliki tiga parameter yang dapat digunakan Shell untuk meneruskan berbagai jenis informasi. Nilai yang diteruskan bergantung pada jenis handler, dan beberapa dapat diatur ke NULL.
- pIDFolder menyimpan penunjuk folder ke daftar pengidentifikasi item (PIDL). Untuk ekstensi lembar properti, ini adalah NULL. Untuk ekstensi menu pintasan, ini adalah PIDL folder yang berisi item yang menu pintasannya sedang ditampilkan. Untuk penangan seret dan letakkan nondefault, ini adalah PIDL dari folder target.
- pDataObject memegang penunjuk ke antarmuka IDataObject objek data. Objek data menyimpan satu atau beberapa nama file dalam format CF_HDROP .
- hRegKey menyimpan kunci registri untuk objek file atau jenis folder.
Metode IShellExtInit::Initialize menyimpan nama file, penunjuk IDataObject , dan kunci registri sesuai kebutuhan untuk digunakan nanti. Fragmen kode berikut mengilustrasikan implementasi IShellExtInit::Initialize. Untuk kesederhanaan, contoh ini mengasumsikan bahwa objek data hanya berisi satu file. Secara umum, file mungkin berisi beberapa file yang masing-masing perlu diekstrak.
LPCITEMIDLIST m_pIDFolder; //The folder's PIDL
wchar_t m_szFile[MAX_PATH]; //The file name
IDataObject *m_pDataObj; //The IDataObject pointer
HKEY m_hRegKey; //The file or folder's registry key
STDMETHODIMP CShellExt::Initialize(LPCITEMIDLIST pIDFolder,
IDataObject *pDataObj,
HKEY hRegKey)
{
// If Initialize has already been called, release the old PIDL
ILFree(m_pIDFolder);
m_pIDFolder = nullptr;
// Store the new PIDL.
if (pIDFolder)
{
m_pIDFolder = ILClone(pIDFolder);
}
// If Initialize has already been called, release the old
// IDataObject pointer.
if (m_pDataObj)
{
m_pDataObj->Release();
}
// If a data object pointer was passed in, save it and
// extract the file name.
if (pDataObj)
{
m_pDataObj = pDataObj;
pDataObj->AddRef();
STGMEDIUM medium;
FORMATETC fe = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
UINT uCount;
if (SUCCEEDED(m_pDataObj->GetData(&fe, &medium)))
{
// Get the count of files dropped.
uCount = DragQueryFile((HDROP)medium.hGlobal, (UINT)-1, NULL, 0);
// Get the first file name from the CF_HDROP.
if (uCount)
DragQueryFile((HDROP)medium.hGlobal, 0, m_szFile,
sizeof(m_szFile)/sizeof(TCHAR));
ReleaseStgMedium(&medium);
}
}
// Duplicate the registry handle.
if (hRegKey)
RegOpenKeyEx(hRegKey, nullptr, 0L, MAXIMUM_ALLOWED, &m_hRegKey);
return S_OK;
}
CSampleExtHandler adalah nama kelas yang digunakan untuk mengimplementasikan antarmuka. Variabel m_pIDFolder, m_pDataObject, m_szFileName, dan m_hRegKey adalah variabel privat yang digunakan untuk menyimpan informasi yang diteruskan. Untuk kesederhanaan, contoh ini mengasumsikan bahwa hanya satu nama file yang akan dipegang oleh objek data. Setelah struktur FORMATETC diambil dari objek data, DragQueryFile digunakan untuk mengekstrak nama file dari anggota medium.hGlobal struktur FORMATETC. Jika kunci registri diteruskan, metode menggunakan RegOpenKeyEx untuk membuka kunci dan menetapkan handel ke m_hRegKey.
Kustomisasi Infotip
Ada dua cara untuk mengkustomisasi infotip:
- Terapkan objek yang mendukung IQueryInfo lalu daftarkan objek tersebut di bawah subkuntang yang tepat di registri (lihat Mendaftarkan Penangan Ekstensi Shell di bawah).
- Tentukan string tetap atau daftar properti file tertentu yang akan ditampilkan.
Untuk menampilkan string tetap untuk ekstensi namespace, buat entri yang disebut InfoTip
di kunci {CLSID} ekstensi namespace Anda. Atur nilai entri tersebut menjadi string harfiah yang ingin Anda tampilkan, seperti yang ditunjukkan dalam contoh ini, atau string tidak langsung yang menentukan sumber daya dan indeks dalam sumber daya tersebut (untuk tujuan pelokalan).
HKEY_CLASSES_ROOT
CLSID
{CLSID}
InfoTip = InfoTip string for your namespace extension
Untuk menampilkan string tetap untuk jenis file, buat entri yang disebut InfoTip
dalam kunci ProgID dari jenis file tersebut. Atur nilai entri tersebut menjadi string harfiah yang ingin Anda tampilkan atau string tidak langsung yang menentukan sumber daya dan indeks dalam sumber daya tersebut (untuk tujuan pelokalan), seperti yang ditunjukkan dalam contoh ini.
HKEY_CLASSES_ROOT
ProgID
InfoTip = Resource.dll, 3
Jika Anda ingin Shell menampilkan properti file tertentu di infotip untuk jenis file tertentu, buat entri yang disebut InfoTip
di kunci ProgID untuk jenis file tersebut. Atur nilai entri tersebut menjadi daftar nama properti kanonis yang diurai titik koma, pasangan pengidentifikasi format (FMTID)/pengidentifikasi properti (PID), atau keduanya. Nilai ini harus dimulai dengan "prop:" untuk mengidentifikasinya sebagai string daftar properti. Jika Anda menghilangkan "prop:", nilainya dilihat sebagai string harfiah dan ditampilkan seperti itu.
Dalam contoh berikut, nama propname adalah nama properti kanonis (seperti System.Date) dan {fmtid},pid adalah pasangan FMTID/PID .
HKEY_CLASSES_ROOT
ProgID
InfoTip = prop:propname;propname;{fmtid},pid;{fmtid},pid
Nama properti berikut dapat digunakan:
Nama Properti | Deskripsi | Diambil Dari |
---|---|---|
Penulis | Penulis dokumen | PIDSI_AUTHOR |
Judul | Judul dokumen | PIDSI_TITLE |
Subjek | Ringkasan subjek | PIDSI_SUBJECT |
Komentar | Komentar dokumen | PIDSI_COMMENT atau properti folder/driver |
PageCount | Jumlah halaman | PIDSI_PAGECOUNT |
Nama | Nama yang mudah diingat | Tampilan folder standar |
OriginalLocation | Lokasi file asli | Folder tas kerja dan folder Keranjang Sampah |
DateDeleted | File tanggal dihapus | Folder Keranjang Sampah |
Jenis | Jenis file | Tampilan detail folder standar |
Ukuran | Ukuran file | Tampilan detail folder standar |
SyncCopyIn | Sama seperti OriginalLocation | Sama seperti OriginalLocation |
Dimodifikasi | Tanggal terakhir diubah | Tampilan detail folder standar |
Dibuat | Tanggal dibuat | Tampilan detail folder standar |
Diakses | Tanggal terakhir diakses | Tampilan detail folder standar |
InFolder | Direktori yang berisi file | Hasil pencarian dokumen |
Pangkat | Kualitas kecocokan pencarian | Hasil pencarian dokumen |
FreeSpace | Ruang penyimpanan yang tersedia | Disk drive |
NumberOfVisits | Jumlah kunjungan | Folder favorit |
Atribut | Atribut File | Tampilan detail folder standar |
Perusahaan | Nama perusahaan | PIDDSI_COMPANY |
Kategori | Kategori dokumen | PIDDSI_CATEGORY |
Hak Cipta | Hak cipta media | PIDMSI_COPYRIGHT |
HTMLInfoTipFile | File InfoTip HTML | Desktop.ini file untuk folder |
Meningkatkan Windows Search dengan Penangan Ekstensi Shell
Penangan ekstensi Shell dapat digunakan untuk meningkatkan pengalaman pengguna yang disediakan oleh penangan protokol Windows Search. Untuk mengaktifkan penyempurnaan tersebut, penangan ekstensi Shell pendukung harus dirancang untuk diintegrasikan dengan penangan protokol pencarian sebagai sumber data. Untuk informasi tentang cara meningkatkan penangan protokol Windows Search melalui integrasi dengan penangan ekstensi Shell, lihat Menambahkan Ikon, Pratinjau, dan Menu Pintasan. Untuk informasi selengkapnya tentang penangan protokol Windows Search, lihat Mengembangkan Penangan Protokol.
Mendaftarkan Handler Ekstensi Shell
Objek handler ekstensi Shell harus didaftarkan sebelum Shell dapat menggunakannya. Bagian ini adalah diskusi umum tentang cara mendaftarkan penangan ekstensi Shell.
Setiap kali Anda membuat atau mengubah handler ekstensi Shell, penting untuk memberi tahu sistem bahwa Anda telah membuat perubahan dengan SHChangeNotify, menentukan peristiwa SHCNE_ASSOCCHANGED . Jika Anda tidak memanggil SHChangeNotify, perubahan mungkin tidak dikenali sampai sistem di-boot ulang.
Seperti semua objek COM, Anda harus membuat GUID untuk handler menggunakan alat seperti UUIDGEN.exe. Buat kunci di bawah HKEY_CLASSES_ROOT\CLSID yang namanya adalah bentuk string GUID. Karena handler ekstensi Shell adalah server dalam proses, Anda harus membuat kunci InProcServer32 di bawah kunci GUID dengan nilai default yang diatur ke jalur DLL handler. Gunakan model utas Apartemen.
Setiap kali Shell mengambil tindakan yang dapat melibatkan penangan ekstensi Shell, Shell memeriksa kunci registri yang sesuai. Kunci di mana handler ekstensi terdaftar sehingga mengontrol kapan akan dipanggil. Misalnya, ini adalah praktik umum untuk memiliki penangan menu pintasan yang dipanggil ketika Shell menampilkan menu pintasan untuk anggota jenis file. Dalam hal ini, handler harus terdaftar di bawah kunci ProgID jenis file.
Nama Handler
Untuk mengaktifkan handler ekstensi Shell, buat subkunci dengan nama subkunci handler (lihat di bawah) di bawah subkunci ShellEx dari ProgID (untuk jenis file) atau nama jenis objek Shell (untuk Objek Shell yang Ditentukan Sebelumnya).
Misalnya, jika Anda ingin mendaftarkan penangan ekstensi menu pintasan untuk MyProgram.1, Anda akan mulai dengan membuat subkunci berikut:
HKEY_CLASSES_ROOT
MyProgram.1
ShellEx
ContextMenuHandlers
Untuk handler berikut, buat subkunci di bawah kunci "Nama Subkunci Handler" yang namanya adalah versi string CLSID dari ekstensi Shell. Beberapa ekstensi dapat didaftarkan di bawah kunci nama subkunci handler dengan membuat beberapa subkunci.
Penghandel | Antarmuka | Nama Subkuntang Handler |
---|---|---|
Penangan menu pintasan | IContextMenu | ContextMenuHandlers |
Handler copyhook | ICopyHook | CopyHookHandlers |
Handler seret dan letakkan | IContextMenu | DragDropHandlers |
Handler lembar properti | IShellPropSheetExt | PropertySheetHandlers |
Handler penyedia kolom (tidak digunakan lagi di Windows Vista) | IColumnProvider | ColumnHandlers |
Untuk handler berikut, nilai default kunci "Handler Subkey Name" adalah versi string CLSID dari ekstensi Shell. Hanya satu ekstensi yang dapat didaftarkan untuk handler ini.
Penghandel | Antarmuka | Nama Subkuntang Handler |
---|---|---|
Penangan data | IDataObject | DataHandler |
Jatuhkan handler | IDropTarget | DropHandler |
Handler ikon | IExtractIcona/W | IconHandler |
Penangan gambar | IExtractImage | {BB2E617C-0920-11d1-9A0B-00C04FC2D6C1} |
Penangan gambar mini | IThumbnailProvider | {E357FCCD-A995-4576-B01F-234630154E96} |
Penangan infotip | IQueryInfo | {00021500-0000-0000-C000-000000000046} |
Tautan Shell (ANSI ) | IShellLinkA | {000214EE-0000-0000-C000-000000000046} |
Tautan shell (UNICODE) | IShellLinkW | {000214F9-0000-0000-C000-000000000046} |
Penyimpanan terstruktur | IStorage | {0000000B-0000-0000-C000-000000000046} |
Metadata | IPropertyStore | PropertyHandler |
Metadata | IPropertySetStorage (tidak digunakan lagi di Windows Vista) | PropertyHandler |
Sematkan ke Menu Mulai | IStartMenuPinnedList | {a2a9545d-a0c2-42b4-9708-a0b2badd77c8} |
Sematkan ke Bilah Tugas | {90AA3A4E-1CBA-4233-B8BB-535773D48449} |
Subkunci yang ditentukan untuk menambahkan Sematkan ke Menu Mulai dan Sematkan ke Taskbar ke menu pintasan item hanya diperlukan untuk jenis file yang menyertakan entri IsShortCut .
Dukungan untuk penangan penyedia kolom dihapus di Windows Vista. Juga, pada Windows Vista, IPropertySetStorage telah ditolak demi IPropertyStore.
Meskipun IExtractImage tetap didukung, IThumbnailProvider lebih disukai untuk Windows Vista dan yang lebih baru.
Objek Shell yang telah ditentukan sebelumnya
Shell menentukan objek tambahan di bawah HKEY_CLASSES_ROOT yang dapat diperluas dengan cara yang sama seperti jenis file. Misalnya, untuk menambahkan handler lembar properti untuk semua file, Anda dapat mendaftar di bawah kunci PropertySheetHandlers .
HKEY_CLASSES_ROOT
*
shellex
PropertySheetHandlers
Tabel berikut memberikan berbagai subkuntang HKEY_CLASSES_ROOT di mana handler ekstensi dapat didaftarkan. Perhatikan bahwa banyak handler ekstensi tidak dapat didaftarkan di bawah semua subkunji yang tercantum. Untuk detail lebih lanjut, lihat dokumentasi handler tertentu.
Subkunci | Deskripsi | Kemungkinan Handler | Versi |
---|---|---|---|
* | Semua file | Menu Pintasan, Lembar Properti, Kata Kerja (lihat di bawah) | Semua |
AllFileSystemObjects | Semua file dan folder file | Menu Pintasan, Lembar Properti, Kata Kerja | 4,71 |
Folder | Semua folder | Menu Pintasan, Lembar Properti, Kata Kerja | Semua |
Direktori | Folder file | Menu Pintasan, Lembar Properti, Kata Kerja | Semua |
Direktori\Latar Belakang | Latar belakang folder file | Menu Pintasan saja | 4,71 |
Drive | Semua drive di MyComputer, seperti "C:\" | Menu Pintasan, Lembar Properti, Kata Kerja | Semua |
Jaringan | Seluruh jaringan (di bawah Tempat Jaringan Saya) | Menu Pintasan, Lembar Properti, Kata Kerja | Semua |
Network\Type\ # | Semua objek jenis # (lihat di bawah) | Menu pintasan, Lembar Properti, Kata Kerja | 4,71 |
NetShare | Semua berbagi jaringan | Menu pintasan, Lembar Properti, Kata Kerja | 4,71 |
NetServer | Semua server jaringan | Menu pintasan, Lembar Properti, Kata Kerja | 4,71 |
network_provider_name | Semua objek yang disediakan oleh penyedia jaringan "network_provider_name" | Menu pintasan, Lembar Properti, Kata Kerja | Semua |
Printer | Semua printer | Menu Pintasan, Lembar Properti | Semua |
AudioCD | CD Audio di drive CD | Kata kerja saja | Semua |
DVD | Drive DVD (Windows 2000) | Menu Pintasan, Lembar Properti, Kata Kerja | 4,71 |
Catatan:
- Menu pintasan latar belakang folder file diakses dengan mengklik kanan dalam folder file, tetapi tidak melalui konten folder mana pun.
- "Kata kerja" adalah perintah khusus yang terdaftar di bawah HKEY_CLASSES_ROOT\Subkey\Shell\Verb .
- UntukJenis\#Jaringan\ , "#" adalah kode jenis penyedia jaringan dalam desimal. Kode jenis penyedia jaringan adalah kata tinggi dari jenis jaringan. Daftar jenis jaringan diberikan dalam file header Winnetwk.h (nilai WNNC_NET_*). Misalnya, WNNC_NET_SHIVA 0x00330000, sehingga kunci jenis yang sesuai akan HKEY_CLASSES_ROOT\\Jaringan Tipe\51 .
- "network_provider_name" adalah nama penyedia jaringan seperti yang ditentukan oleh WNetGetProviderName, dengan spasi yang dikonversi menjadi garis bawah. Misalnya, jika penyedia jaringan Microsoft Networking diinstal, nama penyedianya adalah "Microsoft Windows Network", dan network_provider_name yang sesuai Microsoft_Windows_Network.
Contoh Pendaftaran Handler Ekstensi
Untuk mengaktifkan handler tertentu, buat subkunci di bawah kunci jenis handler ekstensi dengan nama handler. Shell tidak menggunakan nama handler, tetapi harus berbeda dari semua nama lain di bawah subkunjuk jenis tersebut. Atur nilai default subkey nama ke bentuk string GUID handler.
Contoh berikut mengilustrasikan entri registri yang mengaktifkan menu pintasan dan penangan ekstensi lembar properti, menggunakan contoh jenis file .myp:
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}
Prosedur pendaftaran yang dibahas di bagian ini harus diikuti untuk semua sistem Windows.
Topik terkait