Tablice skojarzeń
Tablica skojarzeń jest uporządkowaną listą lokalizacji rejestru używanych do przechowywania informacji o typie elementu, w tym procedur obsługi, czasowników i innych atrybutów, takich jak ikona i nazwa wyświetlana typu. Powłoka używa tablic skojarzeń do wykonywania zapytań wstępnie zdefiniowanych zestawów lokalizacji rejestru, które mogą zawierać informacje o elemencie powłoki.
Ten temat jest zorganizowany w następujący sposób:
- informacje o tablicach skojarzeń
- wykonywanie zapytań dotyczących tablic skojarzeń
-
praca z tablicami skojarzeń dla określonego źródła danych powłoki
- tablice skojarzeń źródła danych powłoki shell
- dodatkowe zasoby
- Tematy pokrewne
Informacje o tablicach skojarzeń
Tablica skojarzeń to uporządkowana lista lokalizacji rejestru, które zawierają informacje o typie elementu, w tym programy obsługi, czasowniki i inne atrybuty, takie jak ikona i nazwa wyświetlana typu. Te informacje o typie elementu można zarejestrować na różnych poziomach specyfiki. Można na przykład zarejestrować czasownik, który będzie wyświetlany tylko dla określonego typu pliku (na przykład .jpg) lub dla wszystkich elementów z tym samym elementem System.Kind (na przykład System.kind = obraz) lub dla wszystkich elementów.
Powłoka używa tablic skojarzeń do wykonywania zapytań wstępnie zdefiniowanych zestawów lokalizacji rejestru, które mogą potencjalnie zawierać informacje o elemencie. Interfejsy API tablicy skojarzeń mogą służyć do pobierania z podklucza rejestru pojedynczej wartości zawierającej żądane informacje, przy użyciu tej wartości pochodzącej z pierwszego wpisu w tablicy, która ją udostępnia. Na przykład domyślna wartość ikony jest pobierana w ten sposób. Tablica skojarzeń może również służyć do pobierania zestawu wartości przechowywanych w podkluczach rejestru. Na przykład lista czasowników jest tworzona na podstawie tych czasowników zarejestrowanych we wszystkich podkluczach.
Gdy powłoka wysyła zapytanie do wstępnie zdefiniowanego zestawu lokalizacji rejestru w celu uzyskania informacji o elemencie powłoki, umieszcza lokalizacje rejestru w tablicy w kolejności od najbardziej określonej lokalizacji do najbardziej ogólnej.
Ponieważ tablice skojarzeń są uporządkowanymi listami, zapewniają deweloperom aplikacji mechanizm dodawania informacji do rejestru, który zostanie zwrócony dla określonego typu elementu. Podobnie tablice skojarzeń umożliwiają deweloperom aplikacji dodawanie informacji do rejestru dla określonej grupy elementów, gdy te elementy są zarejestrowane w bardziej ogólnej lokalizacji. Ta logika informuje o decyzji o najbardziej odpowiedniej lokalizacji w rejestrze w celu przechowywania informacji o elementach powłoki.
W domyślnym systemie Windows plik .jpg ma następującą tablicę skojarzeń:
- HKEY_CLASSES_ROOT\ jpgfile
- HKEY_CLASSES_ROOT\systemFileAssociations\.jpg
- obrazu HKEY_CLASSES_ROOT\
- HKEY_CLASSES_ROOT\*
- HKEY_CLASSES_ROOT\AllFilesystemObjects
Aby uzyskać informacje na temat rejestrowania tablic skojarzeń, zobacz application registration.
Wykonywanie zapytań względem tablic skojarzeń
Istnieją interfejsy API powłoki do pobierania informacji z zakresu podkluczów rejestru, z najbardziej określonego podklucza rejestru do nadzbioru informacji we wszystkich podkluczach rejestru.
Najczęstszym zastosowaniem tablicy skojarzeń jest zapytanie o pojedynczą wartość zwracaną przez powłokę z najbardziej określonego elementu w tablicy zawierającej żądane informacje. Poniższy przykład kodu pokazuje, jak to zrobić.
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();
}
Następujące interfejsy API mogą służyć do wykonywania zapytań względem tablicy skojarzeń lub konstruowania tablicy skojarzeń IQueryAssociations obiektu, do którego można wykonywać zapytania:
- AssocCreate (wcześniejsze niż Windows Vista)
- AssocCreateForClasses
- AssocQueryString
Praca z tablicami skojarzeń dla określonego źródła danych powłoki
Każde źródło danych powłoki definiuje tablicę skojarzeń dla swoich elementów. Definiowanie tablicy skojarzeń jest zwykle funkcją typu elementu. Implementatory źródła danych powłoki powinny definiować i dokumentować tablice skojarzeń, aby umożliwić aplikacjom rozszerzanie zachowania tych typów, takich jak rejestrowanie czasowników lub innych informacji. Aplikacje mogą rozszerzać zachowanie elementów na podstawie dodawania danych do podklucze tablicy skojarzeń, takich jak dodawanie czasowników dla elementów.
Źródło danych systemu plików tworzy tablicę skojarzeń dla plików w oparciu o następujące podklucze rejestru i specjalne identyfikatory ProgID:
Jeśli plik ma zarejestrowany identyfikator ProgID, jest używany HKEY_CLASSES_ROOT\ProgID. W przeciwnym razie jest używana HKEY_CLASSES_ROOT\Nieznany.
Rozszerzenie nazwy pliku jest zarejestrowane w obszarze HKEY_CLASSES_ROOT\SystemFileAssociations\.fileExtension podklucza.
Specjalne identyfikatory ProgID są wyświetlane w poniższej tabeli.
Identyfikator progu specjalnego Opis HKEY_CLASSES_ROOT\* Wszystkie pliki (inne niż foldery) HKEY_CLASSES_ROOT\AllFilesystemObjects Pliki i foldery systemu plików HKEY_CLASSES_ROOT\Directory Foldery systemu plików folderu HKEY_CLASSES_ROOT\ Kontenery powłoki
Tablice skojarzeń źródła danych powłoki
Poniższa lista reprezentuje niektóre tablice skojarzeń magazynu danych powłoki, które mogą być używane do celów opisanych w tym temacie:
- HKEY_CLASSES_ROOT\*
- HKEY_CLASSES_ROOT\AllFilesystemObjects
- HKEY_CLASSES_ROOT\Kind.Document
- HKEY_CLASSES_ROOT\wyniki
- HKEY_CLASSES_ROOT\systemFileAssociations\.docx
- HKEY_CLASSES_ROOT\Word.Document.12
Macierze skojarzeń źródła danych powłoki, które mogą być używane dla folderu DBFolder (magazyn danych powłoki reprezentujący elementy w wynikach wyszukiwania i widokach opartych na zapytaniach) są następujące:
- Dyski
- Sieć
- RegItems
- Przykłady:
- Widok zawartości
- Czasowniki
Inne typowe tablice skojarzeń obejmują foldery i drukarki.
Dodatkowe zasoby
- Aby utworzyć magazyn danych powłoki, zobacz Implementowanie podstawowych interfejsów obiektów folderów.
Tematy pokrewne