Geoff Chappell - Software Analyst
The ITaskItem interface is implemented in EXPLORER.EXE by a class that is named internally as CTaskItem (which the Windows 10 implementation derives to CWindowTaskItem and CImmersiveTaskItem). The interface is thought to be used only within EXPLORER.
Please note that the interface is not only internal to EXPLORER.EXE but is highly variable from one Windows version to another. At least Microsoft has changed the IID each time the interface has changed substantively, which has not always been its practice with COM interfaces in the shell. Beware, however, that these notes have been prepared only from inspection of the original release of each version.
Interface | IID | Versions |
---|---|---|
ITaskItem | {93179D36-69BA-4020-952E-1FDA5F0949A9} | 6.1 only |
{D81D7F0B-67FA-4FCC-98A6-956361DC3608} | 6.2 to 6.3 | |
{7541500A-8E26-45A9-B917-ECC3942192B4} | 10.0 only |
No evidence is known that Microsoft defines the conventional symbol IID_ITaskItem for this interface’s IID. Microsoft’s names and types for the ITaskItem methods are known from the public symbol files for EXPLORER.EXE. The presentation here follows the ordering of the virtual function table after the IUnknown methods.
Offset (x86) | Offset (x64) | Prototype | Versions |
---|---|---|---|
0x0C (6.1 to 6.3) | 0x18 (6.1 to 6.3) |
HRESULT STDMETHODCALLTYPE Initialize (HWND); |
6.1 to 6.3 |
0x10 (6.1 to 6.3); 0x0C |
0x20 (6.1 to 6.3); 0x18 |
DWORD STDMETHODCALLTYPE GetFirstOpenedTime (VOID); |
6.1 and higher |
0x14 (6.1 to 6.3); 0x10 |
0x28 (6.1 to 6.3); 0x20 |
DWORD STDMETHODCALLTYPE GetLastActivatedTime (VOID); |
6.1 and higher |
0x18 (6.1 to 6.3); 0x14 |
0x30 (6.1 to 6.3); 0x28 |
HRESULT STDMETHODCALLTYPE UpdateLastActivatedTime (VOID); |
6.1 and higher |
0x1C (6.1 to 6.3); 0x18 |
0x38 (6.1 to 6.3); 0x30 |
DWORD STDMETHODCALLTYPE GetLastInteractiveStartTime (VOID); |
6.1 and higher |
0x20 (6.1 to 6.3); 0x1C |
0x40 (6.1 to 6.3); 0x38 |
HRESULT STDMETHODCALLTYPE SetLastInteractiveStartTime (DWORD); |
6.1 and higher |
0x24 (6.1 to 6.3); 0x20 |
0x48 (6.1 to 6.3); 0x40 |
BOOL STDMETHODCALLTYPE HasBeenInteracted (VOID); |
6.1 and higher |
0x28 (6.1 to 6.3) | 0x50 (6.1 to 6.3) |
INT STDMETHODCALLTYPE GetIconPref (VOID); |
6.1 to 6.3 |
0x2C (6.1 to 6.3) | 0x58 (6.1 to 6.3) |
HRESULT STDMETHODCALLTYPE SetIconPref (INT); |
6.1 to 6.3 |
0x30 (6.1 to 6.3); 0x24 |
0x60 (6.1 to 6.3); 0x48 |
INT STDMETHODCALLTYPE GetIconId (VOID); |
6.1 and higher |
0x34 (6.1 to 6.3); 0x28 |
0x68 (6.1 to 6.3); 0x50 |
HRESULT STDMETHODCALLTYPE SetIconId (INT); |
6.1 and higher |
0x38 (6.1 to 6.3) | 0x70 (6.1 to 6.3) |
HRESULT STDMETHODCALLTYPE GetHotTrackColor (DWORD *); |
6.1 to 6.3 |
0x3C (6.1 to 6.3) | 0x78 (6.1 to 6.3) |
HRESULT STDMETHODCALLTYPE SetHotTrackColor (DWORD); |
6.1 to 6.3 |
0x40 (6.1 to 6.3); 0x2C |
0x80 (6.1 to 6.3); 0x58 |
BOOL STDMETHODCALLTYPE IsMarkedFullscreen (VOID); |
6.1 and higher |
0x44 (6.1 to 6.3); 0x30 |
0x88 (6.1 to 6.3); 0x60 |
HRESULT STDMETHODCALLTYPE MarkFullscreen (BOOL); |
6.1 and higher |
0x48 (6.1 to 6.3); 0x34 |
0x90 (6.1 to 6.3); 0x68 |
HRESULT STDMETHODCALLTYPE SetWindow (HWND); |
6.1 and higher |
0x4C (6.1 to 6.3); 0x38 |
0x98 (6.1 to 6.3); 0x70 |
HWND STDMETHODCALLTYPE GetWindow (VOID); |
6.1 and higher |
0x50 (6.1 to 6.3); 0x3C |
0xA0 (6.1 to 6.3); 0x78 |
HWND STDMETHODCALLTYPE GetThumbnailWindow (VOID); |
6.1 and higher |
0x54 (6.1 to 6.3); 0x40 |
0xA8 (6.1 to 6.3); 0x80 |
HWND STDMETHODCALLTYPE GetLivePreviewWindow (VOID); |
6.1 and higher |
0x44 | 0x88 |
VOID STDMETHODCALLTYPE SetLivePreviewWindow (HWND); |
10.0 and higher |
0x58 (6.1 to 6.3); 0x48 |
0xB0 (6.1 to 6.3); 0x90 |
DWORD STDMETHODCALLTYPE GetFlags (VOID); |
6.1 to 6.2 |
DWORD STDMETHODCALLTYPE GetFlags (VOID) const; |
6.3 and higher | ||
0x5C (6.1 to 6.3); 0x4C |
0xB8 (6.1 to 6.3); 0x98 |
HRESULT STDMETHODCALLTYPE UpdateFlags ( DWORD, DWORD); |
6.1 and higher |
0x60 (6.1 to 6.3); 0x50 |
0xC0 (6.1 to 6.3); 0xA0 |
BOOL STDMETHODCALLTYPE SetProgressValue (DWORD); |
6.1 and higher |
0x64 (6.1 to 6.3); 0x54 |
0xC8 (6.1 to 6.3); 0xA8 |
DWORD STDMETHODCALLTYPE GetProgressValue (VOID); |
6.1 and higher |
0x68 (6.1 to 6.3); 0x58 |
0xD0 (6.1 to 6.3); 0xB0 |
BOOL STDMETHODCALLTYPE SetProgressState (TBPSTATE); |
6.1 and higher |
0x6C (6.1 to 6.3); 0x5C |
0xD8 (6.1 to 6.3); 0xB8 |
TBPSTATE STDMETHODCALLTYPE GetProgressState (VOID); |
6.1 and higher |
0x70 (6.1 to 6.3); 0x60 |
0xE0 (6.1 to 6.3); 0xC0 |
BOOL STDMETHODCALLTYPE ResetProgress (VOID); |
6.1 and higher |
0x74 (6.1 to 6.3); 0x64 |
0xE8 (6.1 to 6.3); 0xC8 |
HMONITOR STDMETHODCALLTYPE GetMonitor (VOID); |
6.2 and higher |
0x78 (6.1 to 6.3); 0x68 |
0xF0 (6.1 to 6.3); 0xD0 |
VOID STDMETHODCALLTYPE UpdateMonitor (VOID); |
6.2 and higher |
0x74 (6.1); 0x7C (6.2 to 6.3); 0x6C |
0xE8 (6.1); 0xF8 (6.2 to 6.3); 0xD8 |
INT STDMETHODCALLTYPE GetNumTabs (VOID); |
6.1 and higher |
0x78 (6.1); 0x80 (6.2 to 6.3); 0x70 |
0xF0 (6.1); 0x0100 (6.2 to 6.3); 0xE0 |
HRESULT STDMETHODCALLTYPE AddTab (ITaskItem *); |
6.1 and higher |
0x7C (6.1); 0x84 (6.2 to 6.3); 0x74 |
0xF8 (6.1); 0x0108 (6.2 to 6.3); 0xE8 |
HRESULT STDMETHODCALLTYPE RemoveTab (ITaskItem *); |
6.1 and higher |
0x80 (6.1); 0x88 (6.2 to 6.3); 0x78 |
0x0100 (6.1); 0x0110 (6.2 to 6.3); 0xF0 |
HRESULT STDMETHODCALLTYPE SetActiveTabItem (ITaskItem *); |
6.1 and higher |
0x84 (6.1); 0x8C (6.2 to 6.3); 0x7C |
0x0108 (6.1); 0x0118 (6.2 to 6.3); 0xF8 |
HRESULT STDMETHODCALLTYPE SetTabContainerItem (ITaskItem *); |
6.1 and higher |
0x88 (6.1); 0x90 (6.2 to 6.3); 0x80 |
0x0110 (6.1); 0x0120 (6.2 to 6.3); 0x0100 |
HRESULT STDMETHODCALLTYPE SetTabProperties (STPFLAG); |
6.1 and higher |
0x8C (6.1); 0x94 (6.2 to 6.3); 0x84 |
0x0118 (6.1); 0x0128 (6.2 to 6.3); 0x0108 |
ITaskItem * STDMETHODCALLTYPE GetActiveTabItem (VOID); |
6.1 and higher |
0x90 (6.1); 0x98 (6.2 to 6.3); 0x88 |
0x0120 (6.1); 0x0130 (6.2 to 6.3); 0x0110 |
ITaskItem * STDMETHODCALLTYPE GetTabContainerItem (VOID); |
6.1 to 6.2 |
ITaskItem * STDMETHODCALLTYPE GetTabContainerItem (VOID) const; |
6.3 and higher | ||
0x94 (6.1); 0x9C (6.2 to 6.3); 0x8C |
0x0128 (6.1); 0x0138 (6.2 to 6.3); 0x0118 |
BOOL STDMETHODCALLTYPE IsActiveTab (VOID); |
6.1 and higher |
0x98 (6.1); 0xA0 (6.2 to 6.3); 0x90 |
0x0130 (6.1); 0x0140 (6.2 to 6.3); 0x0120 |
HRESULT STDMETHODCALLTYPE ThumbBarAddButtons ( THUMBBUTTON32 *, DWORD); |
6.1 to 6.3 |
HRESULT STDMETHODCALLTYPE ThumbBarAddButtons ( THUMBBUTTON32 *, DWORD, UINT); |
10.0 and higher | ||
0x9C (6.1); 0xA4 (6.2 to 6.3); 0x94 |
0x0138 (6.1); 0x0148 (6.2 to 6.3); 0x0128 |
HRESULT STDMETHODCALLTYPE ThumbBarUpdateButton (THUMBBUTTON32 *); |
6.1 and higher |
0xA0 (6.1); 0xA8 (6.2 to 6.3); 0x98 |
0x0140 (6.1); 0x0150 (6.2 to 6.3); 0x0130 |
HRESULT STDMETHODCALLTYPE ThumbBarSetImageList (HIMAGELIST); |
6.1 to 6.3 |
HRESULT STDMETHODCALLTYPE ThumbBarSetImageList ( HIMAGELIST, UINT); |
10.0 and higher | ||
0xA4 (6.1); 0xAC (6.2 to 6.3); 0x9C |
0x0148 (6.1); 0x0158 (6.2 to 6.3); 0x0138 |
THUMBBUTTON32 *STDMETHODCALLTYPE GetThumbButtons (INT *); |
6.1 and higher |
0xA8 (6.1); 0xB0 (6.2 to 6.3); 0xA0 |
0x0150 (6.1); 0x0160 (6.2 to 6.3); 0x0140 |
HRESULT STDMETHODCALLTYPE GetThumbButtonById ( UINT, THUMBBUTTON32 *); |
6.1 and higher |
0xAC (6.1); 0xB4 (6.2 to 6.3); 0xA4 |
0x0158 (6.1); 0x0168 (6.2 to 6.3); 0x0148 |
HIMAGELIST STDMETHODCALLTYPE ThumbBarGetImageList (VOID); |
6.1 and higher |
0xB0 (6.1); 0xB8 (6.2 to 6.3); 0xA8 |
0x0160 (6.1); 0x0170 (6.2 to 6.3); 0x0150 |
BOOL STDMETHODCALLTYPE HasThumbBar (UINT *); |
6.1 and higher |
0xB4 (6.1); 0xBC (6.2 to 6.3); 0xAC |
0x0168 (6.1); 0x0178 (6.2 to 6.3); 0x0158 |
UINT STDMETHODCALLTYPE GetThumbButtonThemePartById (UINT); |
6.1 and higher |
0xB0 | 0x0160 |
VOID STDMETHODCALLTYPE RemoveThumbBar (VOID); |
10.0 and higher |
0xC0 (6.2 to 6.3); 0xB4 |
0x0180 (6.2 to 6.3); 0x0168 |
VOID STDMETHODCALLTYPE ClearOverlayIconNoDestroy (VOID); |
6.2 and higher |
0xB8 (6.1); 0xC4 (6.2 to 6.3); 0xB8 |
0x0170 (6.1); 0x0188 (6.2 to 6.3); 0x0170 |
HRESULT STDMETHODCALLTYPE SetOverlayIcon (HICON); |
6.1 to 6.3 |
HRESULT STDMETHODCALLTYPE SetOverlayIcon ( HICON, UINT); |
10.0 and higher | ||
0xBC (6.1); 0xC8 (6.2 to 6.3); 0xBC |
0x0178 (6.1); 0x0190 (6.2 to 6.3); 0x0178 |
HRESULT STDMETHODCALLTYPE SetOverlayIconDescription (PCWSTR); |
6.1 and higher |
0xC0 (6.1); 0xCC (6.2 to 6.3); 0xC0 |
0x0180 (6.1); 0x0198 (6.2 to 6.3); 0x0180 |
HICON STDMETHODCALLTYPE GetOverlayIcon (VOID); |
6.1 and higher |
0xC4 (6.1); 0xD0 (6.2 to 6.3); 0xC4 |
0x0188 (6.1); 0x01A0 (6.2 to 6.3); 0x0188 |
PCWSTR STDMETHODCALLTYPE GetOverlayIconDescription (VOID); |
6.1 and higher |
0xC8 (6.1); 0xD4 (6.2 to 6.3); 0xC8 |
0x0190 (6.1); 0x01A8 (6.2 to 6.3); 0x0190 |
DWORD STDMETHODCALLTYPE GetOverlayIconTime (VOID); |
6.1 and higher |
0xCC (6.1); 0xD8 (6.2 to 6.3); 0xCC |
0x0198 (6.1); 0x01B0 (6.2 to 6.3); 0x0198 |
HRESULT STDMETHODCALLTYPE SetThumbnailToolTip (PCWSTR); |
6.1 and higher |
0xD0 (6.1); 0xDC (6.2 to 6.3); 0xD0 |
0x01A0 (6.1); 0x01B8 (6.2 to 6.3); 0x01A0 |
PCWSTR STDMETHODCALLTYPE GetThumbnailToolTip (VOID); |
6.1 and higher |
0xD4 (6.1); 0xE0 (6.2 to 6.3); 0xD4 |
0x01A8 (6.1); 0x01C0 (6.2 to 6.3); 0x01A8 |
HRESULT STDMETHODCALLTYPE SetThumbnailClip (RECT *); |
6.1 and higher |
0xD8 (6.1); 0xE4 (6.2 to 6.3); 0xD8 |
0x01B0 (6.1); 0x01C8 (6.2 to 6.3); 0x01B0 |
HRESULT STDMETHODCALLTYPE GetThumbnailClip (RECT *); |
6.1 and higher |
0xE8 (6.2 to 6.3); 0xDC |
0x01D0 (6.2 to 6.3); 0x01B8 |
DWORD STDMETHODCALLTYPE AddButtonRef (VOID); |
6.2 and higher |
0xEC (6.2 to 6.3); 0xE0 |
0x01D8 (6.2 to 6.3); 0x01C0 |
DWORD STDMETHODCALLTYPE RemoveButtonRef (VOID); |
6.2 and higher |
0xF0 (6.2 to 6.3); 0xE4 |
0x01E0 (6.2 to 6.3); 0x01C8 |
DWORD STDMETHODCALLTYPE GetButtonRef (VOID); |
6.2 and higher |
0xE8 | 0x01D0 |
bool STDMETHODCALLTYPE IsImmersive (VOID); |
10.0 and higher |
0xEC | 0x01D8 |
IImmersiveApplication * STDMETHODCALLTYPE GetImmersiveApp (VOID); |
10.0 and higher |
0xF0 | 0x01E0 |
bool STDMETHODCALLTYPE IsVisibleOnCurrentVirtualDesktop (VOID); |
10.0 and higher |
0xF4 | 0x01E8 |
VOID STDMETHODCALLTYPE SetVisibleOnCurrentVirtualDesktop (bool); |
10.0 and higher |
Among the types that can be passed as arguments or be returned or be produced at addresses that are passed as arguments, an undocumented _TBPSTATE and tagTHUMBBUTTON32 are represented above by type definitions which follow age-old Microsoft conventions:
typedef enum _TBPSTATE TBPSTATE; typedef struct tagTHUMBBUTTON32 THUMBBUTTON32;