Bagikan melalui


Menambahkan Ikon dan Menu Konteks dengan Ekstensi Shell

Nota

Windows Desktop Search 2.x adalah teknologi usang yang awalnya tersedia sebagai add-in untuk Windows XP dan Windows Server 2003. Pada rilis selanjutnya, gunakan Windows Search.

Anda dapat meningkatkan pengalaman pengguna dengan Microsoft Windows Desktop Search (WDS) dan handler protokol Anda dengan menerapkan ekstensi Shell. Tanpa ekstensi lebih lanjut, handler protokol yang Anda buat tidak akan menyertakan pengalaman pengguna berikut:

  • WDS tidak akan menampilkan ikon tertentu untuk hasil Anda.
  • Saat pengguna mengeklik dua kali item, antarmuka pengguna tidak akan merespons peristiwa tersebut.
  • Saat pengguna mengklik kanan item, menu konteks tidak akan mendukung operasi apa pun untuk item tersebut.

Implementasi minimal IPersist dan IPersistFolder diperlukan oleh IShellFolder, dan implementasi minimal IShellFolder diperlukan untuk IContextMenu dan IExtractIcon, dua antarmuka yang memberikan pengalaman pengguna yang lebih mulus.

 

IPersist

Antarmuka IPersist mendefinisikan metode tunggal GetClassID, yang dirancang untuk menyediakan CLSID objek yang dapat disimpan terus-menerus dalam sistem.

Metode Deskripsi
GetClassID() Mengembalikan ClassID dari handler protokol

 

Nota

CLSID yang sama harus diimplementasikan untuk IPersist, IPersistFolder dan IShellFolder.

 

 

IPersistFolder

Antarmuka IPersistFolder digunakan untuk menginisialisasi objek folder Shell. Implementasi antarmuka ini, yang merupakan turunan dari IPersist, merupakan cara folder diberi tahu di mana posisinya dalam namespace Shell.

Metode Deskripsi
Inisialisasi() Menginstruksikan objek folder Shell untuk menginisialisasi dirinya sendiri berdasarkan informasi yang diteruskan dan mengembalikan S_OK

 

Nota

CLSID yang sama harus diimplementasikan untuk IPersist, IPersistFolder dan IShellFolder.

 

Anda tidak menggunakan antarmuka ini secara langsung. Ini digunakan oleh implementasi sistem file antarmuka IShellFolder::BindToObject saat menginisialisasi objek folder Shell.

 

IShellFolder

Antarmuka IShellFolder digunakan untuk mengelola folder, dan diperlukan implementasi parsial agar antarmuka ikon dan konteks yang diterapkan untuk pengolah protokol dapat berfungsi dengan benar di antarmuka pengguna hasil Pencarian Desktop Windows. Sebagian besar fungsionalitas yang diperlukan diekspos melalui metode GetUIObjectOf. Metode ini memungkinkan add-in untuk meminta antarmuka IExtractIcon dan IContextMenu.

Antarmuka IShellFolder menggunakan PIDL alih-alih URL. Berbeda dengan persyaratan ekstensi Namespace lengkap, add-in dapat menggunakan struktur IDL sederhana yang hanya berisi URL.

Metode IShellFolder berikut harus diimplementasikan. Perhatikan bahwa lima metode ini memerlukan implementasi minimal.

Metode Deskripsi
BindToObject() Mengembalikan E_NOTIMPL
BindToStorage() Mengembalikan E_NOTIMPL
CreateViewObject() Mengembalikan E_NOTIMPL
SetNameOf() Mengembalikan E_NOTIMPL
ParseDisplayName() Mengonversi URL ke struktur PIDL
CompareIDs() Membandingkan dua nilai PIDL
GetDisplayNameOf() Mengembalikan URL untuk PIDL
GetUIObjectOf() Metode ini mirip dengan metode OLE COM QueryInterface. Jika ikon diminta, pemanggil meminta IID_IExtractIcon; jika menu konteks diminta, pemanggil meminta IID_IContextMenu.

 

Nota

CLSID yang sama harus diimplementasikan untuk IPersist, IPersistFolder dan IShellFolder.

 

IShellFolder tidak digunakan untuk menghitung folder. Ini berarti bahwa nama tampilan folder akan menjadi URL fisik. Ini dapat berubah di masa depan.

 

IContextMenu

Saat WDS menampilkan hasil kepada pengguna, pengguna dapat mengklik kanan item dan melihat menu konteks yang ditentukan oleh antarmuka IContextMenu Anda.

Tindakan default pada menu konteks adalah tindakan yang sama yang diambil saat item diklik dua kali. Tanpa antarmuka IShellFolder atau IContextMenu yang sesuai untuk item tersebut, perilaku default untuk acara klik dua kali adalah meneruskan URL sebagai argumen ke fungsi ShellExecute.

 

IExtractIcon

IExtractIcon mengambil ikon untuk antarmuka pengguna WDS berdasarkan URL pada PIDL yang disediakan oleh pengelola protokol Anda.

 

Sampel Kode

Kode Sampel Antarmuka Pengguna Handler Protokol Kustom menunjukkan implementasi IShellFolder dan antarmuka pendukung dan mencakup dukungan untuk memanipulasi PIDL.

Referensi

Kode Sampel Antarmuka Pengguna Pengendali Protokol Kustom

Menginstal dan Mendaftarkan Handler Protokol