Rozszerzenia Powłoki Windows (Windows Shell Extension)

reichel

1 Wstęp
2 Interfejsy związane z powłoką windows
3 Inne artykuły powiązane z powłoką windows

Wstęp

Kilka wstępnie zebranych informacji na temat powłoki windows. Powinno się tu jeszcze znaleźć mnóstwo informacji (komunikaty, funkcje SH*). Na razie to na dobry początek, zachęcam do rozwoju.

Interfejsy związane z powłoką windows

Nazwy interfejsów Opis skrócony Powiązane artykuły/FAQ/Gotowce Minimalna wersja shella/systemu
[[IDropTarget]] Odpowiedzialny za obsługę obiektów (OLE) upuszczonych na dane okno. [[Delphi/Gotowce/Obsługa_Interfejsu_IDropTarget_(DragNDrop)]]
[[IDropTargetHelper]] pozwala dodać `bajery` i pokazywać za pomocą obrazków co się przenosi.
[[IDropSource]] Odpowiedzialny za źródło obiektów, które zostaną upuszczone (można tu np. dostosowywać format do danej aplikacji, na którą obiekt ma być upuszczony).
[[IDragSourceHelper]] pozwala dodać `bajery` i pokazywać za pomocą obrazków co się przenosi.
[[IShellIconOverlayIdentifier]] Umożliwia utworzenie ikonki w rogu ikonki (jak np. ikonka skrótu lub udostępniania). [[Z_pogranicza/Skojarzenie_pliku_z_naszym_programem_bez_względu_na_rozszerzenie]]
[[IExtractIcon]] Tworzenie ikony w `locie` w zależności od zawartości pliku lub też jej uzyskanie.
[[IExtractImage]] Pozwala uzyskać albo utworzyć miniaturkę dla danego pliku. Dla windows Vista i wyżej patrz IThumbnailProvider 4.70
[[IThumbnailProvider]] Odpowiednik IExtractImage w Vista i wyżej. Większa funkcjonalność Vista
[[IPreviewHandler]] Wymagane Vista lub wyżej. Pozwala uzyskać/tworzyć podgląd pliku w oknie explorer'a. Vista
[[IInitializeWithStream]] Potrzebny do współdziałania z IThumbnailProvider oraz IPreviewHandler. Vista
[[IQueryInfo]] Umożliwia dodawanie niestandardowych elementów do opisu pliku (widzianych w ToolTip'ie oraz w bocznym panelu) [[Delphi/FAQ/Jak_wstawić_własne_dymki_podpowiedzi_dla_plików_w_powłoce_windows_(IQueryInfo)]]
[[IContextMenu]] Umożliwia dodanie własnych menu do menu kontekstowego (danego rozszerzenia). Przykład w katalogu Demos\ActiveX\ShellExt (delphi 6 i 7)
[[Delphi/Gotowce/IContextMenu_-_jak_dodać_podmenu]] [[Icontextmenu_i_Ikoną]]
[[IContextMenu2]] Rozszerzona wersja IContextMenu
[[IContextMenu3]] Rozszerzona wersja IContextMenu
[[IPersistFile]] Potrzebny do współpracy z interfejsami, które potrzebują informacji o danym pliku (np ścieżka). Np. IContextMenu, IQueryInfo
[[IShellExecuteHook]] Umożliwia dodanie niestandardowej reakcji na dwukrotne kliknięcie (uruchomienie z powłoki) pliku. [[Z_pogranicza/Skojarzenie_pliku_z_naszym_programem_bez_względu_na_rozszerzenie]]
[[ICopyHook]] Umożliwia dodanie niestandardowej reakcji podczas kopiowania/przenoszenia/kasowania plików w powłoce. Przykład w katalogu Demos\ActiveX\ShellExt (delphi 6 i 7)
[[IColumnProvider]] Umożliwia dodanie niestandardowej kolumny do widoku szczegółowego.
[[IEmptyVolumeCache]] Zabytek, patrz IEmptyVolumeCache2. 5.0
[[IEmptyVolumeCache2]] Za pomocą tego interfejsu można dodać własną akcje w przypadku gdy zabraknie miejsca na dysku (np oczyszczenie pliku tymczasowego naszego programu). 5.0
[[IShellPropSheetExt]] Pozwala dodać zakładkę do właściwości obiektów powłoki. Np. pliki, właściwości pulpit, ekran, etc.
[[IDeskBand]] Pozwala utworzyć własny pasek narzędziowy, który może być zadokowany w: pasku narzędziowym (tam gdzie guzik start), w pasku narzędziowym okien windows oraz IE.
[[IInputObject]] Odpowiedzialny za interakcje z użytkownikiem. Np. w IDeskBand.
[[IShellBrowser]] Przechowuje informacje dotyczące całego okna. Tego interfejsu nie implementuje się. Pozwala on jednak na interakcje z oknem windows (np zmiana tekstu w pasku

statusu.). Najczęściej we współpracy z IShellView oraz IShellFolder

[[IShellView]] dzięki temu interfejsowi można uzyskać widok okna. Znacznie częściej stosuje się go jednak do wykreowania niestandardowego widoku okna wraz z interfejsem IShellFolder.

Te interfejsy razem pozwalają na utworzenie rozszerzenia przestrzeni nazw w powłoce windows (Windows Shell Namespace Extension). Do tego typu rozszerzeń należą takie obiekty

jak: aktówka, folder drukarek, historia

[[IShellFolder]] Odpowiedzialny za budowanie wirtualnej struktury plików. Patrz IShellView. [[Z_pogranicza/FAQ/Ikonka_w_oknie_Mój_komputer_i_innych_folderach_specjalnych]] 4.0
[[IShellFolder2]] Rozszerzony IShellFolder 5.0
[[IENumIDList]] Pozwala tworzyć liste katalogow, plikow (PIDL) często (a własciwie powinno być zawsze) z IShellFolder oraz IShellView 4.0
[[IShellItem]] 6.0
[[IShellLibrary]] Umożliwia tworzenie specjalnych folderów (bibliotek) ewolucja folderów w stylu CSIDL np. moje dokumenty w7 ws2008r2
[[ITaskBarList]] Nie do końca opisany interfejs (2010 już tak). Pozwala na modyfikacje paska zawierającego guziki związane z oknami na pasku zadań. w2000 ws2000
[[ITaskBarList2]] ITaskBarList + oznaczanie okna `Full Screen` wXP ws2003
[[ITaskBarList3]] ITaskBarList2 + gadżety dla windows 7 oraz 2008 R2 (ikonki, obrazki, historia plików) w7 ws2008r2
[[ITaskBarList4]] w7 ws2008r2
[[IShellDispatch]] Umożliwia dobranie się do systemowych okien `Uruchom` i `Szukaj`
[[IThumbnailCapture]] Bazujący na funkcjonalności IE. Umożliwia stworzenie miniaturki z podanej strony WWW.
[[IDelegateFolder]] Nie do końca opisany interfejs przez MS. Umożliwia tworzenie folderów (np w mój komputer), które dostępne są bezpośrednio z pominięciem drzewa. Jako przykład można tu podać folder skanerów i aparatów. W mo komputer dostępne są bezpośrednio foldery z konkretnym modelem skanear/aparatu, jednak w strukturze poprzedza je folder

skanery i aparaty

[[IObjectWithSite]] Pozwala budować rozszerzenia (najczęściej wraz z innymi interfejsami) dla paska narzędzi/menu/... IE oraz okien windows.
[[IOleWindow]] Wszędzie tam gdzie potrzeba okna. Niekoniecznie związany z powłoką.
[[IDockingWindow]] Jesli rozszerzenie będzie paskiem narzędziowym (np. IDeskBand). Niekoniecznie związany z powłoką.
[[IPersist]] Tu dostaje się info o CLSID. Interfejs niekoniecznie związany z powłoką.

Inne artykuły powiązane z powłoką windows

(może doczekają sie jakiejś inne systematyzacji)

3 komentarzy

~reichel, jak masz "przykladow testowych ze set mb", to moze podeslij mi je, co? akurat jestem w kropce bo po wpisaniu w Google hasla "IContextMenu Delphi" to idzie od razu fala stron o wykorzystaniu ToolTip. a ja akurat potrzebuje o IContextMenu bo to niezbedne dla projektow ktore robie. to podeslesz?

che che dlugo myslalem aby cos napisac (przykladow testowych swoich mam ze set mb), ale czas .... zachecam do dopiskow i rozwoju. Wlasciwie dzial delphi jest przypadkiem (bo najwiecej w tym pisalem) ale moze byc cokolwiek. Ideaa wszedzie ta sama (a i naglowkow wiecej).

reichel: Zaskakujesz mnie. O co się zapytam to ty o tym piszesz :D Oby tak dalej :p