Bagikan melalui


Array Asosiasi

Array asosiasi adalah daftar lokasi registri yang diurutkan yang digunakan untuk menyimpan informasi tentang jenis item, termasuk handler, kata kerja, dan atribut lain seperti ikon dan nama tampilan jenis. Shell menggunakan array asosiasi untuk mengkueri sekumpulan lokasi registri yang telah ditentukan sebelumnya yang mungkin berisi informasi tentang item Shell.

Topik ini diatur sebagai berikut:

Tentang Array Asosiasi

Array asosiasi adalah daftar lokasi registri yang diurutkan yang berisi informasi tentang jenis item, termasuk handler, kata kerja, dan atribut lainnya seperti ikon dan nama tampilan jenis. Informasi tentang jenis item ini dapat didaftarkan pada berbagai tingkat kekhususan. Misalnya, Anda dapat mendaftarkan kata kerja yang hanya akan muncul untuk jenis file tertentu (seperti .jpg), atau untuk semua item dengan System.Kind yang sama (misalnya, System.kind = picture), atau untuk semua item.

Shell menggunakan array asosiasi untuk mengkueri sekumpulan lokasi registri yang telah ditentukan sebelumnya yang mungkin berpotensi berisi informasi tentang item tersebut. API array asosiasi dapat digunakan untuk mengambil dari subkuntang registri nilai tunggal yang berisi informasi yang diminta, dengan nilai tersebut berasal dari entri pertama dalam array yang menyediakannya. Misalnya, nilai ikon default diambil dengan cara ini. Array asosiasi juga dapat digunakan untuk mengambil sekumpulan nilai yang disimpan dalam subkey registri. Misalnya, daftar kata kerja dibangun dari kata kerja yang terdaftar di bawah semua subkey.

Setelah Shell meminta sekumpulan lokasi registri yang telah ditentukan sebelumnya untuk informasi tentang item Shell, Shell menempatkan lokasi registri ke dalam array secara berurutan dari lokasi yang paling spesifik ke yang paling umum.

Karena array asosiasi adalah daftar yang diurutkan, mereka menyediakan mekanisme kepada pengembang aplikasi untuk menambahkan informasi ke registri yang akan dikembalikan untuk jenis item tertentu. Demikian juga, array asosiasi mengizinkan pengembang aplikasi untuk menambahkan informasi ke registri untuk sekelompok item tertentu ketika item tersebut terdaftar di lokasi yang lebih umum. Logika ini menginformasikan keputusan Anda tentang lokasi yang paling tepat di registri untuk menyimpan informasi tentang item Shell.

Pada sistem Windows default, file .jpg memiliki array asosiasi berikut:

  • \ HKEY_CLASSES_ROOT jpgfile
  • \ HKEY_CLASSES_ROOT SystemFileAssociations\.jpg
  • \ HKEY_CLASSES_ROOT Gambar
  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOT AllFilesystemObjects

Untuk informasi tentang mendaftarkan array asosiasi, lihat Pendaftaran Aplikasi.

Mengkueri Array Asosiasi

Ada API Shell untuk mengambil informasi dari berbagai subkunjian registri, dari subkunjur registri yang paling spesifik hingga superset informasi di semua subkunji registri.

Penggunaan array asosiasi yang paling umum adalah mengkueri satu nilai yang dikembalikan Shell dari elemen yang paling spesifik dalam array yang memiliki informasi yang diminta. Contoh kode berikut menunjukkan cara melakukannya.

IQueryAssociations *pqa;

// pShellItem is assumed to be an existing IShellItem object.
hr = pShellItem->BindToHandler(NULL, BHID_AssociationArray, IID_PPV_ARGS(&pqa));
if (SUCCEEDED(hr))
{
    wchar_t szValue[256];
    DWORD cbValue = sizeof(szValue);      // Count of bytes in the array

    hr = pqa->GetData(0, ASSOCDATA_VALUE, L"InfoTip", szValue, &cbValue);
    if (SUCCEEDED(hr))
    {
        // The "InfoTip" value is used to compute the infotip string from
        // properties of an item.
    }
    pqa->Release();
}

API berikut dapat digunakan untuk mengkueri array asosiasi atau untuk membuat objek IQueryAssociations array asosiasi yang dapat dikueri:

Bekerja dengan Array Asosiasi untuk Sumber Data Shell Tertentu

Setiap sumber data Shell menentukan array asosiasi untuk itemnya. Menentukan array asosiasi biasanya merupakan fungsi dari jenis item. Pelaksana sumber data Shell harus menentukan dan mendkumentasikan array asosiasi untuk memungkinkan aplikasi memperluas perilaku jenis tersebut, seperti untuk mendaftarkan kata kerja atau informasi lainnya. Aplikasi dapat memperluas perilaku item berdasarkan penambahan data ke subkuntang array asosiasi, seperti menambahkan kata kerja untuk item.

Sumber data sistem file membangun array asosiasi untuk file berdasarkan subkuntang registri berikut dan ProgID khusus:

  • Jika file memiliki ProgID terdaftar, HKEY_CLASSES_ROOT\ProgID digunakan. Jika tidak , HKEY_CLASSES_ROOT\Tidak Diketahui digunakan.

  • Ekstensi nama file terdaftar di bawah subkunciSystemFileAssociations.fileExtension\HKEY_CLASSES_ROOT\.

  • ProgID khusus diperlihatkan dalam tabel berikut.

    ProgID khusus Deskripsi
    HKEY_CLASSES_ROOT\* Semua file (non-folder)
    \ HKEY_CLASSES_ROOT AllFilesystemObjects File dan folder sistem file
    \ HKEY_CLASSES_ROOT Direktori Folder sistem file
    \ HKEY_CLASSES_ROOT Folder Kontainer shell

     

Array Asosiasi Sumber Data Shell

Daftar berikut ini mewakili beberapa array asosiasi penyimpanan data Shell yang dapat digunakan untuk tujuan yang dijelaskan dalam topik ini:

  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOT AllFilesystemObjects
  • \ HKEY_CLASSES_ROOT Kind.Document
  • \ HKEY_CLASSES_ROOT Hasil
  • \ HKEY_CLASSES_ROOT SystemFileAssociations\.docx
  • \ HKEY_CLASSES_ROOT Word. Document.12

Array asosiasi sumber data shell yang dapat digunakan untuk DBFolder (penyimpanan data Shell yang mewakili item dalam hasil pencarian dan tampilan berbasis kueri) adalah sebagai berikut:

  • Drive
  • Jaringan
  • RegItems
  • Contoh:
    • ContentView
    • Kata kerja

Array asosiasi umum lainnya termasuk Folder dan Printer.

Sumber Daya Tambahan

Pendaftaran Aplikasi

Jenis File

Cara Kerja Asosiasi File

Tampilan Konten Menurut Tipe File atau Jenis

Pemverifikasi Tipe File

Penangan Tipe File

Pengidentifikasi Terprogram

Jenis yang Dirasakan