Udostępnij przez


Tworzenie programów obsługi kolumn

[Ta funkcja jest obsługiwana tylko w systemie Windows XP lub starszym. ]

Widok Szczegóły w Eksploratorze Windows zwykle wyświetla kilka standardowych kolumn. Każda kolumna zawiera informacje, takie jak rozmiar pliku lub typ, dla każdego pliku w bieżącym folderze. Implementując i rejestrując procedurę obsługi kolumn, można udostępnić niestandardowe kolumny do wyświetlania.

Ogólne procedury implementowania i rejestrowania programu obsługi rozszerzenia powłoki zostały omówione w Tworzenie programów obsługi rozszerzeń powłoki. Ten dokument koncentruje się na tych aspektach implementacji specyficznych dla procedur obsługi kolumn.

Omówiono następujące tematy.

Jak działają programy obsługi kolumn

Poniższa ilustracja przedstawia Eksploratora Windows w widoku Szczegóły.

zrzut ekranu eksploratora windows w widoku szczegółów

W systemie Windows 2000 folder może również obsługiwać wiele kolumn, które domyślnie nie są wyświetlane. Użytkownik może wyświetlić dodatkowe kolumny, klikając prawym przyciskiem myszy jeden z nagłówków kolumn i wybierając polecenie Więcej... z menu. Zostanie wyświetlone okno dialogowe z listą dostępnych kolumn dla folderu i umożliwia użytkownikowi wybranie kolumn do wyświetlenia. Poniższa ilustracja przedstawia to okno dialogowe dla poprzedniego przykładu.

zrzut ekranu Eksploratora Windows z wyświetlonym oknem dialogowym wybierania szczegółów

Tworząc procedurę obsługi kolumn, można utworzyć kolumny niestandardowe i dodać je do tej listy. Na przykład kolekcja plików zawierających muzykę może użyć programu obsługi kolumn, aby wyświetlić kolumny z listą artysty i fragmentu zawartego w każdym pliku.

Procedura obsługi kolumn jest obiektem globalnym, który jest wywoływany za każdym razem, gdy Eksplorator Windows wyświetla widok Szczegóły. Jednak programy obsługi kolumn są zwykle używane do wyświetlania kolumn niestandardowych tylko dla członków określonego typu pliku . Przed wyświetleniem widoku Szczegóły Eksplorator Windows wysyła zapytania do wszystkich zarejestrowanych procedur obsługi kolumn pod kątem ich właściwości kolumn. Jeśli użytkownik wybrał jedną z kolumn procedury obsługi, Eksplorator Windows wysyła zapytanie do procedury obsługi danych skojarzonych. Gdy program obsługi kolumn odbiera żądanie dotyczące danych, udostępnia je, jeśli plik jest członkiem obsługiwanego typu. W przeciwnym razie ignoruje żądanie, zwracając S_FALSE.

Rejestrowanie programów obsługi kolumn

Moduły obsługi kolumn są rejestrowane pod następującym podkluczem.

HKEY_CLASSES_ROOT
   Folder
      shellex
         ColumnHandlers

Utwórz podklucz ColumnHandlers nazwany formą łańcucha identyfikatora klasy programu obsługi (CLSID) GUID. Aby zapoznać się z ogólnym omówieniem sposobu rejestrowania procedur obsługi rozszerzeń powłoki, zobacz Creating Shell Extension Handlers. W poniższym przykładzie pokazano, jak zarejestrować procedurę obsługi kolumn.

HKEY_CLASSES_ROOT
   Folder
      shellex
         ColumnHandlers
            {My Column Handler CLSID GUID}

Implementowanie programów obsługi kolumn

Podobnie jak wszystkie programy obsługi rozszerzeń powłoki, programy obsługi kolumn są obiektami modelu obiektów składników (COM) implementowanych jako biblioteki DLL. Eksportują interfejs IColumnProvider oraz interfejs IUnknown.

Eksplorator Windows wywołuje trzy metody wyeksportowane przez IColumnProvider, aby zażądać informacji potrzebnych do wyświetlenia kolumny. Procedura używana przez Eksploratora Windows to:

  1. Wywołaj IColumnProvider::Initialize, aby określić folder, który ma być wyświetlany.
  2. Wywołaj IColumnProvider::GetColumnInfo w celu pobrania identyfikatora i właściwości kolumny.
  3. Jeśli kolumna została wybrana przez użytkownika, wywołaj metodę IColumnProvider::GetItemData dla każdego pliku w folderze, aby pobrać dane należące do wpisu kolumny pliku.

Metoda Inicjalizować

Eksplorator Windows wywołuje IColumnProvider::Initialize w celu zainicjowania programu obsługi kolumn. Metoda ma trzy parametry, ale obecnie jest używana tylko wszFolder. Jest on ustawiony na folder, którego widok Szczegóły ma być wyświetlany. Zapisz nazwę folderu do późniejszego użycia i zainicjuj obiekt programu obsługi zgodnie z potrzebami.

Metoda GetColumnInfo

Następnie Eksplorator Windows wywołuje IColumnProvider::GetColumnInfo, aby zażądać identyfikatora i właściwości kolumny. Przekazuje on indeks dla kolumny w parametrze dwIndex. Ten indeks jest dowolną wartością używaną do wyliczania kolumn. Eksplorator Windows przekazuje również wskaźnik do struktury SHCOLUMNINFO. Ta struktura służy do zwracania identyfikatora i cech kolumny. IColumnProvider::GetColumnInfo powinien przypisywać odpowiednie wartości członkom struktury i zwracać.

Kolumny są identyfikowane przez identyfikator zestawu właściwości OLE (FMTID) i skojarzony identyfikator właściwości (PID). Pierwszy element struktury SHCOLUMNINFO , scid, jest wskaźnikiem do struktury SHCOLUMNID używanej do identyfikowania kolumny. Jego fmtid element zawiera FMTID kolumny, a jego pid element zawiera PID kolumny. Na przykład standardowa para FMTID/PID, która jest często używana do identyfikowania kolumn, to PID Autora zestawu właściwości Informacje podsumowujące.

Jeśli to możliwe, program obsługi powinien używać istniejących identyfikatorów FMTID i identyfikatorów PID do identyfikowania obsługiwanej kolumny. Jeśli używasz niestandardowej struktury SHCOLUMNID, kolumna wyświetli dane tylko dla tych plików obsługiwanych przez program obsługi. Jeśli folder zawiera inne pliki, ich wpisy będą puste. Jeśli folder zawiera pliki z więcej niż jednego typu pliku, użycie standardowych wartości FMTID/PID może umożliwić scalanie danych z różnych typów w tej samej kolumnie.

Ustaw członka na typ VARIANT danych, które chcesz wyświetlać w kolumnie. Najczęściej używanym typem jest VT_LPSTR, ponieważ większość kolumn wyświetla dane jako ciągi znaków. Pozostałe elementy członkowskie struktury SHCOLUMNINFO służą do definiowania cech kolumny. Przypisz odpowiednie wartości.

Metoda GetItemData

Jeśli wybrano kolumnę programu obsługi kolumn, Eksplorator Windows wywołuje IColumnProvider::GetItemData dla każdego pliku w folderze, który ma być wyświetlany. Parametr pscid jest wskaźnikiem do struktury SHCOLUMNID identyfikującej kolumnę. Parametr pscd wskazuje na strukturę SHCOLUMNDATA, który identyfikuje konkretny plik.

Parametr pvarData zwraca dane, które powinny być wyświetlane w kolumnie obsługującego dla pliku określonego przez pscd. Jeśli ten plik jest obsługiwany przez program obsługi kolumn, przypisz jego wartość danych do pvarData i zwróć S_OK. Jeśli plik nie jest obsługiwany przez program obsługi kolumn, zwróć S_FALSE bez przypisywania wartości do pvarData.

Wiele folderów będzie zawierać wiele plików, które nie są obsługiwane przez żadną konkretną procedurę obsługi kolumn. Aby zwiększyć wydajność, IColumnProvider::GetItemData należy najpierw sprawdzić pwszExt składową struktury wskazywanej przez pscd. Ta zmienna przechowuje rozszerzenie nazwy pliku. Jeśli rozszerzenie wskazuje, że plik nie jest członkiem typu pliku obsługiwanego przez program obsługi, należy unikać niepotrzebnego przetwarzania, natychmiast zwracając S_FALSE.