2 * ReactOS undocumented shell interface
4 * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
5 * Copyright 2013 Dominik Hornung
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #ifndef __SHLOBJ_UNDOC__H
23 #define __SHLOBJ_UNDOC__H
27 #endif /* defined(__cplusplus) */
30 #define IID_PPV_ARG(Itype, ppType) IID_##Itype, reinterpret_cast<void**>((static_cast<Itype**>(ppType)))
32 #define IID_PPV_ARG(Itype, ppType) IID_##Itype, (void**)(ppType)
35 /*****************************************************************************
36 * New shellstate structure
45 /*****************************************************************************
46 * Header for persisted view state in cabinet windows
58 /*****************************************************************************
59 * IInitializeObject interface
62 #define INTERFACE IInitializeObject
64 DECLARE_INTERFACE_(IInitializeObject
, IUnknown
)//, "4622AD16-FF23-11d0-8D34-00A0C90F2719")
66 STDMETHOD(QueryInterface
) (THIS_ REFIID riid
, void **ppv
) PURE
;
67 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
68 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
70 STDMETHOD(Initialize
)(THIS
) PURE
;
73 #if !defined(__cplusplus) || defined(CINTERFACE)
74 #define IInitializeObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
75 #define IInitializeObject_AddRef(T) (T)->lpVtbl->AddRef(T)
76 #define IInitializeObject_Release(T) (T)->lpVtbl->Release(T)
77 #define IInitializeObject_Initialize(T) (T)->lpVtbl->Initialize(T)
81 /*****************************************************************************
82 * IBanneredBar interface
89 #define INTERFACE IBanneredBar
90 DECLARE_INTERFACE_(IBanneredBar
, IUnknown
)//, "596A9A94-013E-11d1-8D34-00A0C90F2719")
92 STDMETHOD(QueryInterface
) (THIS_ REFIID riid
, void **ppv
) PURE
;
93 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
94 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
96 STDMETHOD(SetIconSize
)(THIS_ DWORD iIcon
) PURE
;
97 STDMETHOD(GetIconSize
)(THIS_ DWORD
* piIcon
) PURE
;
98 STDMETHOD(SetBitmap
)(THIS_ HBITMAP hBitmap
) PURE
;
99 STDMETHOD(GetBitmap
)(THIS_ HBITMAP
* phBitmap
) PURE
;
104 #if !defined(__cplusplus) || defined(CINTERFACE)
105 #define IBanneredBar_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
106 #define IBanneredBar_AddRef(T) (T)->lpVtbl->AddRef(T)
107 #define IBanneredBar_Release(T) (T)->lpVtbl->Release(T)
108 #define IBanneredBar_SetIconSize(T,a) (T)->lpVtbl->SetIconSize(T,a)
109 #define IBanneredBar_GetIconSize(T,a) (T)->lpVtbl->GetIconSize(T,a)
110 #define IBanneredBar_SetBitmap(T,a) (T)->lpVtbl->SetBitmap(T,a)
111 #define IBanneredBar_GetBitmap(T,a) (T)->lpVtbl->GetBitmap(T,a)
114 /*****************************************************************************
115 * IGlobalFolderSettings interface
117 struct DEFFOLDERSETTINGS
123 #define INTERFACE IGlobalFolderSettings
124 DECLARE_INTERFACE_(IGlobalFolderSettings
, IUnknown
)
127 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
128 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
129 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
130 /*** IGlobalFolderSettings ***/
131 STDMETHOD(Get
)(THIS_
struct DEFFOLDERSETTINGS
*buffer
, int theSize
) PURE
;
132 STDMETHOD(Set
)(THIS_
const struct DEFFOLDERSETTINGS
*buffer
, int theSize
, unsigned int param14
) PURE
;
136 /*****************************************************************************
137 * IStartMenuCallback interface
139 #define INTERFACE IStartMenuCallback
140 DECLARE_INTERFACE_(IStartMenuCallback
, IOleWindow
)
143 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
144 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
145 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
146 /*** IOleWindow methods ***/
147 STDMETHOD_(HRESULT
,GetWindow
)(THIS_ HWND
*) PURE
;
148 STDMETHOD_(HRESULT
,ContextSensitiveHelp
)(THIS_ BOOL
) PURE
;
149 /*** IStartMenuCallback ***/
150 STDMETHOD_(HRESULT
,Execute
)(THIS_ IShellFolder
*,LPCITEMIDLIST
) PURE
;
151 STDMETHOD_(HRESULT
,Unknown
)(THIS_ PVOID
,PVOID
,PVOID
,PVOID
) PURE
;
152 STDMETHOD_(HRESULT
,AppendMenu
)(THIS_ HMENU
*) PURE
;
157 #define IStartMenuCallback_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
158 #define IStartMenuCallback_AddRef(T) (T)->lpVtbl->AddRef(T)
159 #define IStartMenuCallback_Release(T) (T)->lpVtbl->Release(T)
160 #define IStartMenuCallback_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
161 #define IStartMenuCallback_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
162 #define IStartMenuCallback_Execute(T,a,b) (T)->lpVtbl->Execute(T,a,b)
163 #define IStartMenuCallback_Unknown(T,a,b,c,d) (T)->lpVtbl->Unknown(T,a,b,c,d)
164 #define IStartMenuCallback_AppendMenu(T,a) (T)->lpVtbl->AppendMenu(T,a)
167 /*****************************************************************************
168 * IBandSiteStreamCallback interface
170 #define INTERFACE IBandSiteStreamCallback
171 DECLARE_INTERFACE_(IBandSiteStreamCallback
, IUnknown
)
174 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
175 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
176 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
177 /*** IBandSiteStreamCallback ***/
178 STDMETHOD_(HRESULT
,OnLoad
)(THIS_ IStream
*pStm
, REFIID riid
, PVOID
*pvObj
) PURE
;
179 STDMETHOD_(HRESULT
,OnSave
)(THIS_ IUnknown
*pUnk
, IStream
*pStm
) PURE
;
184 #define IBandSiteStreamCallback_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
185 #define IBandSiteStreamCallback_AddRef(T) (T)->lpVtbl->AddRef(T)
186 #define IBandSiteStreamCallback_Release(T) (T)->lpVtbl->Release(T)
187 #define IBandSiteStreamCallback_OnLoad(T,a,b,c) (T)->lpVtbl->OnLoad(T,a,b,c)
188 #define IBandSiteStreamCallback_OnSave(T,a,b) (T)->lpVtbl->OnSave(T,a,b)
191 /*****************************************************************************
192 * IShellDesktopTray interface
194 #define INTERFACE IShellDesktopTray
195 DECLARE_INTERFACE_(IShellDesktopTray
, IUnknown
)
198 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
199 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
200 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
201 /*** IShellDesktopTray ***/
202 STDMETHOD_(ULONG
,GetState
)(THIS
) PURE
;
203 STDMETHOD(GetTrayWindow
)(THIS_ HWND
*) PURE
;
204 STDMETHOD(RegisterDesktopWindow
)(THIS_ HWND
) PURE
;
205 STDMETHOD(Unknown
)(THIS_ DWORD
,DWORD
) PURE
;
210 #define IShellDesktopTray_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
211 #define IShellDesktopTray_AddRef(T) (T)->lpVtbl->AddRef(T)
212 #define IShellDesktopTray_Release(T) (T)->lpVtbl->Release(T)
213 #define IShellDesktopTray_GetState(T) (T)->lpVtbl->GetState(T)
214 #define IShellDesktopTray_GetTrayWindow(T,a) (T)->lpVtbl->GetTrayWindow(T,a)
215 #define IShellDesktopTray_RegisterDesktopWindow(T,a) (T)->lpVtbl->RegisterDesktopWindow(T,a)
216 #define IShellDesktopTray_Unknown(T,a,b) (T)->lpVtbl->Unknown(T,a,b)
219 /*****************************************************************************
222 #define INTERFACE INscTree
223 DECLARE_INTERFACE_(INscTree
, IUnknown
)
226 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
227 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
228 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
230 STDMETHOD(CreateTree
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
231 STDMETHOD(Initialize
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
232 STDMETHOD(ShowWindow
)(THIS_
long paramC
) PURE
;
233 STDMETHOD(Refresh
)(THIS
) PURE
;
234 STDMETHOD(GetSelectedItem
)(THIS_
long paramC
, long param10
) PURE
;
235 STDMETHOD(SetSelectedItem
)(THIS_
long paramC
, long param10
, long param14
, long param18
) PURE
;
236 STDMETHOD(GetNscMode
)(THIS_
long paramC
) PURE
;
237 STDMETHOD(SetNscMode
)(THIS_
long paramC
) PURE
;
238 STDMETHOD(GetSelectedItemName
)(THIS_
long paramC
, long param10
) PURE
;
239 STDMETHOD(BindToSelectedItemParent
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
240 STDMETHOD(InLabelEdit
)(THIS
) PURE
;
241 STDMETHOD(RightPaneNavigationStarted
)(THIS_
long paramC
) PURE
;
242 STDMETHOD(RightPaneNavigationFinished
)(THIS_
long paramC
) PURE
;
247 #define INscTree_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
248 #define INscTree_AddRef(T) (T)->lpVtbl->AddRef(T)
249 #define INscTree_Release(T) (T)->lpVtbl->Release(T)
250 #define INscTree_CreateTree(T,a,b,c) (T)->lpVtbl->CreateTree(T,a,b,c)
251 #define INscTree_Initialize(T,a,b,c) (T)->lpVtbl->Initialize(T,a,b,c)
252 #define INscTree_ShowWindow(T,a) (T)->lpVtbl->ShowWindow(T,a)
253 #define INscTree_Refresh(T) (T)->lpVtbl->Refresh(T)
254 #define INscTree_GetSelectedItem(T,a,b) (T)->lpVtbl->GetSelectedItem(T,a,b)
255 #define INscTree_SetSelectedItem(T,a,b,c,d) (T)->lpVtbl->SetSelectedItem(T,a,b,c,d)
256 #define INscTree_GetNscMode(T,a) (T)->lpVtbl->GetNscMode(T,a)
257 #define INscTree_SetNscMode(T,a) (T)->lpVtbl->SetNscMode(T,a)
258 #define INscTree_GetSelectedItemName(T,a,b) (T)->lpVtbl->GetSelectedItemName(T,a,b)
259 #define INscTree_BindToSelectedItemParent(T,a,b,c) (T)->lpVtbl->BindToSelectedItemParent(T,a,b,c)
260 #define INscTree_InLabelEdit(T) (T)->lpVtbl->InLabelEdit(T)
261 #define INscTree_RightPaneNavigationStarted(T,a) (T)->lpVtbl->RightPaneNavigationStarted(T,a)
262 #define INscTree_RightPaneNavigationFinished(T,a) (T)->lpVtbl->RightPaneNavigationFinished(T,a)
265 /*****************************************************************************
266 * INscTree2 interface
268 #define INTERFACE INscTree2
269 DECLARE_INTERFACE_(INscTree2
, INscTree
)
272 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
273 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
274 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
276 STDMETHOD(CreateTree
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
277 STDMETHOD(Initialize
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
278 STDMETHOD(ShowWindow
)(THIS_
long paramC
) PURE
;
279 STDMETHOD(Refresh
)(THIS
) PURE
;
280 STDMETHOD(GetSelectedItem
)(THIS_
long paramC
, long param10
) PURE
;
281 STDMETHOD(SetSelectedItem
)(THIS_
long paramC
, long param10
, long param14
, long param18
) PURE
;
282 STDMETHOD(GetNscMode
)(THIS_
long paramC
) PURE
;
283 STDMETHOD(SetNscMode
)(THIS_
long paramC
) PURE
;
284 STDMETHOD(GetSelectedItemName
)(THIS_
long paramC
, long param10
) PURE
;
285 STDMETHOD(BindToSelectedItemParent
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
286 STDMETHOD(InLabelEdit
)(THIS
) PURE
;
287 STDMETHOD(RightPaneNavigationStarted
)(THIS_
long paramC
) PURE
;
288 STDMETHOD(RightPaneNavigationFinished
)(THIS_
long paramC
) PURE
;
290 STDMETHOD(CreateTree2
)(THIS_
long paramC
, long param10
, long param14
, long param18
) PURE
;
295 #define INscTree2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
296 #define INscTree2_AddRef(T) (T)->lpVtbl->AddRef(T)
297 #define INscTree2_Release(T) (T)->lpVtbl->Release(T)
298 #define INscTree2_CreateTree(T,a,b,c) (T)->lpVtbl->CreateTree(T,a,b,c)
299 #define INscTree2_Initialize(T,a,b,c) (T)->lpVtbl->Initialize(T,a,b,c)
300 #define INscTree2_ShowWindow(T,a) (T)->lpVtbl->ShowWindow(T,a)
301 #define INscTree2_Refresh(T) (T)->lpVtbl->Refresh(T)
302 #define INscTree2_GetSelectedItem(T,a,b) (T)->lpVtbl->GetSelectedItem(T,a,b)
303 #define INscTree2_SetSelectedItem(T,a,b,c,d) (T)->lpVtbl->SetSelectedItem(T,a,b,c,d)
304 #define INscTree2_GetNscMode(T,a) (T)->lpVtbl->GetNscMode(T,a)
305 #define INscTree2_SetNscMode(T,a) (T)->lpVtbl->SetNscMode(T,a)
306 #define INscTree2_GetSelectedItemName(T,a,b) (T)->lpVtbl->GetSelectedItemName(T,a,b)
307 #define INscTree2_BindToSelectedItemParent(T,a,b,c) (T)->lpVtbl->BindToSelectedItemParent(T,a,b,c)
308 #define INscTree2_InLabelEdit(T) (T)->lpVtbl->InLabelEdit(T)
309 #define INscTree2_RightPaneNavigationStarted(T,a) (T)->lpVtbl->RightPaneNavigationStarted(T,a)
310 #define INscTree2_RightPaneNavigationFinished(T,a) (T)->lpVtbl->RightPaneNavigationFinished(T,a)
311 #define INscTree2_CreateTree2(T,a,b,c,d) (T)->lpVtbl->CreateTree2(T,a,b,c,d)
314 /*****************************************************************************
315 * IAddressEditBox interface
317 #define INTERFACE IAddressEditBox
318 DECLARE_INTERFACE_(IAddressEditBox
, IUnknown
)
321 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
322 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
323 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
324 /*** IAddressEditBox ***/
325 STDMETHOD(Init
)(THIS_ HWND comboboxEx
, HWND editControl
, long param14
, IUnknown
*param18
) PURE
;
326 STDMETHOD(SetCurrentDir
)(THIS_
long paramC
) PURE
;
327 STDMETHOD(ParseNow
)(THIS_
long paramC
) PURE
;
328 STDMETHOD(Execute
)(THIS_
long paramC
) PURE
;
329 STDMETHOD(Save
)(THIS_
long paramC
) PURE
;
334 #define IAddressEditBox_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
335 #define IAddressEditBox_AddRef(T) (T)->lpVtbl->AddRef(T)
336 #define IAddressEditBox_Release(T) (T)->lpVtbl->Release(T)
337 #define IAddressEditBox_Init(T,a,b,c,d) (T)->lpVtbl->Init(T,a,b,c,d)
338 #define IAddressEditBox_SetCurrentDir(T,a) (T)->lpVtbl->SetCurrentDir(T,a)
339 #define IAddressEditBox_ParseNow(T,a) (T)->lpVtbl->ParseNow(T,a)
340 #define IAddressEditBox_Execute(T,a) (T)->lpVtbl->Execute(T,a)
341 #define IAddressEditBox_Save(T,a) (T)->lpVtbl->Save(T,a)
344 /*****************************************************************************
345 * IBandProxy interface
347 #define INTERFACE IBandProxy
348 DECLARE_INTERFACE_(IBandProxy
, IUnknown
)
351 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
352 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
353 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
355 STDMETHOD(SetSite
)(THIS_ IUnknown
*paramC
) PURE
;
356 STDMETHOD(CreateNewWindow
)(THIS_
long paramC
) PURE
;
357 STDMETHOD(GetBrowserWindow
)(THIS_ IUnknown
**paramC
) PURE
;
358 STDMETHOD(IsConnected
)(THIS
) PURE
;
359 STDMETHOD(NavigateToPIDL
)(THIS_ LPCITEMIDLIST pidl
) PURE
;
360 STDMETHOD(NavigateToURL
)(THIS_
long paramC
, long param10
) PURE
;
365 #define IBandProxy_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
366 #define IBandProxy_AddRef(T) (T)->lpVtbl->AddRef(T)
367 #define IBandProxy_Release(T) (T)->lpVtbl->Release(T)
368 #define IBandProxy_SetSite(T,a) (T)->lpVtbl->SetSite(T,a)
369 #define IBandProxy_CreateNewWindow(T,a) (T)->lpVtbl->CreateNewWindow(T,a)
370 #define IBandProxy_GetBrowserWindow(T,a) (T)->lpVtbl->GetBrowserWindow(T,a)
371 #define IBandProxy_IsConnected(T) (T)->lpVtbl->IsConnected(T)
372 #define IBandProxy_NavigateToPIDL(T,a) (T)->lpVtbl->NavigateToPIDL(T,a)
373 #define IBandProxy_NavigateToURL(T,a,b) (T)->lpVtbl->NavigateToURL(T,a,b)
376 /*****************************************************************************
377 * IExplorerToolbar interface
379 #define INTERFACE IExplorerToolbar
380 DECLARE_INTERFACE_(IExplorerToolbar
, IUnknown
)
383 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
384 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
385 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
386 /*** IExplorerToolbar ***/
387 STDMETHOD(SetCommandTarget
)(THIS_ IUnknown
*theTarget
, GUID
*category
, long param14
) PURE
;
388 STDMETHOD(Unknown1
)(THIS
) PURE
;
389 STDMETHOD(AddButtons
)(THIS_
const GUID
*pguidCmdGroup
, long buttonCount
, TBBUTTON
*buttons
) PURE
;
390 STDMETHOD(AddString
)(THIS_
const GUID
*pguidCmdGroup
, HINSTANCE param10
, LPCTSTR param14
, long *param18
) PURE
;
391 STDMETHOD(GetButton
)(THIS_
const GUID
*paramC
, long param10
, long param14
) PURE
;
392 STDMETHOD(GetState
)(THIS_
const GUID
*pguidCmdGroup
, long commandID
, long *theState
) PURE
;
393 STDMETHOD(SetState
)(THIS_
const GUID
*pguidCmdGroup
, long commandID
, long theState
) PURE
;
394 STDMETHOD(AddBitmap
)(THIS_
const GUID
*pguidCmdGroup
, long param10
, long buttonCount
, TBADDBITMAP
*lParam
, long *newIndex
, COLORREF param20
) PURE
;
395 STDMETHOD(GetBitmapSize
)(THIS_
long *paramC
) PURE
;
396 STDMETHOD(SendToolbarMsg
)(THIS_
const GUID
*pguidCmdGroup
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*result
) PURE
;
397 STDMETHOD(SetImageList
)(THIS_
const GUID
*pguidCmdGroup
, HIMAGELIST param10
, HIMAGELIST param14
, HIMAGELIST param18
) PURE
;
398 STDMETHOD(ModifyButton
)(THIS_
const GUID
*paramC
, long param10
, long param14
) PURE
;
403 #define IExplorerToolbar_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
404 #define IExplorerToolbar_AddRef(T) (T)->lpVtbl->AddRef(T)
405 #define IExplorerToolbar_Release(T) (T)->lpVtbl->Release(T)
406 #define IExplorerToolbar_SetCommandTarget(T,a,b,c) (T)->lpVtbl->SetCommandTarget(T,a,b,c)
407 #define IExplorerToolbar_Unknown1(T) (T)->lpVtbl->Unknown1(T)
408 #define IExplorerToolbar_AddButtons(T,a,b,c) (T)->lpVtbl->AddButtons(T,a,b,c)
409 #define IExplorerToolbar_AddString(T,a,b,c,d) (T)->lpVtbl->AddString(T,a,b,c,d)
410 #define IExplorerToolbar_GetButton(T,a,b,c) (T)->lpVtbl->GetButton(T,a,b,c)
411 #define IExplorerToolbar_GetState(T,a,b,c) (T)->lpVtbl->GetState(T,a,b,c)
412 #define IExplorerToolbar_SetState(T,a,b,c) (T)->lpVtbl->SetState(T,a,b,c)
413 #define IExplorerToolbar_AddBitmap(T,a,b,c,d,e,f) (T)->lpVtbl->AddBitmap(T,a,b,c,d,e,f)
414 #define IExplorerToolbar_GetBitmapSize(T,a) (T)->lpVtbl->GetBitmapSize(T,a)
415 #define IExplorerToolbar_SendToolbarMsg(T,a,b,c,d,e) (T)->lpVtbl->SendToolbarMsg(T,a,b,c,d,e)
416 #define IExplorerToolbar_SetImageList(T,a,b,c,d) (T)->lpVtbl->SetImageList(T,a,b,c,d)
417 #define IExplorerToolbar_ModifyButton(T,a,b,c) (T)->lpVtbl->ModifyButton(T,a,b,c)
420 /*****************************************************************************
421 * IRegTreeOptions interface
423 typedef enum tagWALK_TREE_CMD
425 WALK_TREE_OPTION0
= 0,
426 WALK_TREE_OPTION1
= 1,
427 WALK_TREE_OPTION2
= 2,
428 WALK_TREE_OPTION3
= 3
431 #define INTERFACE IRegTreeOptions
432 DECLARE_INTERFACE_(IRegTreeOptions
, IUnknown
)
435 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
436 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
437 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
438 /*** IRegTreeOptions ***/
439 STDMETHOD(InitTree
)(THIS_ HWND paramC
, HKEY param10
, char const *param14
, char const *param18
) PURE
;
440 STDMETHOD(WalkTree
)(THIS_ WALK_TREE_CMD paramC
) PURE
;
441 STDMETHOD(ToggleItem
)(THIS_ HTREEITEM paramC
) PURE
;
442 STDMETHOD(ShowHelp
)(THIS_ HTREEITEM paramC
, unsigned long param10
) PURE
;
447 #define IRegTreeOptions_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
448 #define IRegTreeOptions_AddRef(T) (T)->lpVtbl->AddRef(T)
449 #define IRegTreeOptions_Release(T) (T)->lpVtbl->Release(T)
450 #define IRegTreeOptions_InitTree(T,a,b,c,d) (T)->lpVtbl->InitTree(T,a,b,c,d)
451 #define IRegTreeOptions_WalkTree(T,a) (T)->lpVtbl->WalkTree(T,a)
452 #define IRegTreeOptions_ToggleItem(T,a) (T)->lpVtbl->ToggleItem(T,a)
453 #define IRegTreeOptions_ShowHelp(T,a,b) (T)->lpVtbl->ShowHelp(T,a,b)
456 /*****************************************************************************
457 * IBandNavigate interface
459 #define INTERFACE IBandNavigate
460 DECLARE_INTERFACE_(IBandNavigate
, IUnknown
)
463 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
464 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
465 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
466 /*** IBandNavigate ***/
467 STDMETHOD(Select
)(THIS_
long paramC
) PURE
;
472 #define IBandNavigate_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
473 #define IBandNavigate_AddRef(T) (T)->lpVtbl->AddRef(T)
474 #define IBandNavigate_Release(T) (T)->lpVtbl->Release(T)
475 #define IBandNavigate_Select(T,a) (T)->lpVtbl->Select(T,a)
478 /*****************************************************************************
479 * INamespaceProxy interface
481 #define INTERFACE INamespaceProxy
482 DECLARE_INTERFACE_(INamespaceProxy
, IUnknown
)
485 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
486 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
487 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
488 /*** INamespaceProxy ***/
489 STDMETHOD(GetNavigateTarget
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
490 STDMETHOD(Invoke
)(THIS_
long paramC
) PURE
;
491 STDMETHOD(OnSelectionChanged
)(THIS_
long paramC
) PURE
;
492 STDMETHOD(RefreshFlags
)(THIS_
long paramC
, long param10
, long param14
) PURE
;
493 STDMETHOD(CacheItem
)(THIS_
long paramC
) PURE
;
498 #define INamespaceProxy_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
499 #define INamespaceProxy_AddRef(T) (T)->lpVtbl->AddRef(T)
500 #define INamespaceProxy_Release(T) (T)->lpVtbl->Release(T)
501 #define INamespaceProxy_GetNavigateTarget(T,a,b,c) (T)->lpVtbl->GetNavigateTarget(T,a,b,c)
502 #define INamespaceProxy_Invoke(T,a) (T)->lpVtbl->Invoke(T,a)
503 #define INamespaceProxy_OnSelectionChanged(T,a) (T)->lpVtbl->OnSelectionChanged(T,a)
504 #define INamespaceProxy_RefreshFlags(T,a,b,c) (T)->lpVtbl->RefreshFlags(T,a,b,c)
505 #define INamespaceProxy_CacheItem(T,a) (T)->lpVtbl->CacheItem(T,a)
508 /*****************************************************************************
509 * IShellMenu2 interface
511 #define INTERFACE IShellMenu2
512 DECLARE_INTERFACE_(IShellMenu2
, IShellMenu
)
515 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
516 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
517 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
519 STDMETHOD(Initialize
)(THIS_ IShellMenuCallback
*psmc
, UINT uId
, UINT uIdAncestor
, DWORD dwFlags
) PURE
;
520 STDMETHOD(GetMenuInfo
)(THIS_ IShellMenuCallback
**ppsmc
, UINT
*puId
, UINT
*puIdAncestor
, DWORD
*pdwFlags
) PURE
;
521 STDMETHOD(SetShellFolder
)(THIS_ IShellFolder
*psf
, LPCITEMIDLIST pidlFolder
, HKEY hKey
, DWORD dwFlags
) PURE
;
522 STDMETHOD(GetShellFolder
)(THIS_ DWORD
*pdwFlags
, LPITEMIDLIST
*ppidl
, REFIID riid
, void **ppv
) PURE
;
523 STDMETHOD(SetMenu
)(THIS_ HMENU hmenu
, HWND hwnd
, DWORD dwFlags
) PURE
;
524 STDMETHOD(GetMenu
)(THIS_ HMENU
*phmenu
, HWND
*phwnd
, DWORD
*pdwFlags
) PURE
;
525 STDMETHOD(InvalidateItem
)(THIS_ LPSMDATA psmd
, DWORD dwFlags
) PURE
;
526 STDMETHOD(GetState
)(THIS_ LPSMDATA psmd
) PURE
;
527 STDMETHOD(SetMenuToolbar
)(THIS_ IUnknown
*punk
, DWORD dwFlags
) PURE
;
528 /*** IShellMenu2 ***/
529 STDMETHOD(GetSubMenu
)(THIS
) PURE
;
530 STDMETHOD(SetToolbar
)(THIS
) PURE
;
531 STDMETHOD(SetMinWidth
)(THIS
) PURE
;
532 STDMETHOD(SetNoBorder
)(THIS
) PURE
;
533 STDMETHOD(SetTheme
)(THIS
) PURE
;
538 #define IShellMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
539 #define IShellMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
540 #define IShellMenu2_Release(T) (T)->lpVtbl->Release(T)
541 #define IShellMenu2_Initialize(T,a,b,c,d) (T)->lpVtbl->Initialize(T,a,b,c,d)
542 #define IShellMenu2_GetMenuInfo(T,a,b,c,d) (T)->lpVtbl->GetMenuInfo(T,a,b,c,d)
543 #define IShellMenu2_SetShellFolder(T,a,b,c,d) (T)->lpVtbl->SetShellFolder(T,a,b,c,d)
544 #define IShellMenu2_GetShellFolder(T,a,b,c,d) (T)->lpVtbl->GetShellFolder(T,a,b,c,d)
545 #define IShellMenu2_SetMenu(T,a,b,c) (T)->lpVtbl->SetMenu(T,a,b,c)
546 #define IShellMenu2_GetMenu(T,a,b,c) (T)->lpVtbl->GetMenu(T,a,b,c)
547 #define IShellMenu2_InvalidateItem(T,a,b) (T)->lpVtbl->InvalidateItem(T,a,b)
548 #define IShellMenu2_GetState(T,a) (T)->lpVtbl->GetState(T,a)
549 #define IShellMenu2_SetMenuToolbar(T,a,b) (T)->lpVtbl->SetMenuToolbar(T,a,b)
550 #define IShellMenu2_GetSubMenu(T) (T)->lpVtbl->GetSubMenu(T)
551 #define IShellMenu2_SetToolbar(T) (T)->lpVtbl->SetToolbar(T)
552 #define IShellMenu2_SetMinWidth(T) (T)->lpVtbl->SetMinWidth(T)
553 #define IShellMenu2_SetNoBorder(T) (T)->lpVtbl->SetNoBorder(T)
554 #define IShellMenu2_SetTheme(T) (T)->lpVtbl->SetTheme(T)
557 /*****************************************************************************
558 * IWinEventHandler interface
560 #define INTERFACE IWinEventHandler
561 DECLARE_INTERFACE_(IWinEventHandler
, IUnknown
)
564 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
565 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
566 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
567 /*** IWinEventHandler ***/
568 STDMETHOD(OnWinEvent
)(THIS_ HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*theResult
) PURE
;
569 STDMETHOD(IsWindowOwner
)(THIS_ HWND hWnd
) PURE
;
574 #define IWinEventHandler_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
575 #define IWinEventHandler_AddRef(T) (T)->lpVtbl->AddRef(T)
576 #define IWinEventHandler_Release(T) (T)->lpVtbl->Release(T)
577 #define IWinEventHandler_OnWinEvent(T,a,b,c,d,e) (T)->lpVtbl->OnWinEvent(T,a,b,c,d,e)
578 #define IWinEventHandler_IsWindowOwner(T,a) (T)->lpVtbl->IsWindowOwner(T,a)
581 /*****************************************************************************
582 * IAddressBand interface
584 #define INTERFACE IAddressBand
585 DECLARE_INTERFACE_(IAddressBand
, IUnknown
)
588 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
589 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
590 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
591 /*** IAddressBand ***/
592 STDMETHOD(FileSysChange
)(THIS_
long param8
, long paramC
) PURE
;
593 STDMETHOD(Refresh
)(THIS_
long param8
) PURE
;
598 #define IAddressBand_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
599 #define IAddressBand_AddRef(T) (T)->lpVtbl->AddRef(T)
600 #define IAddressBand_Release(T) (T)->lpVtbl->Release(T)
601 #define IAddressBand_FileSysChange(T,a,b) (T)->lpVtbl->FileSysChange(T,a,b)
602 #define IAddressBand_Refresh(T,a) (T)->lpVtbl->Refresh(T,a)
605 /*****************************************************************************
606 * IShellMenuAcc interface
608 #define INTERFACE IShellMenuAcc
609 DECLARE_INTERFACE_(IShellMenuAcc
, IUnknown
)
612 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
613 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
614 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
615 /*** IShellMenuAcc ***/
616 STDMETHOD(GetTop
)(THIS
) PURE
;
617 STDMETHOD(GetBottom
)(THIS
) PURE
;
618 STDMETHOD(GetTracked
)(THIS
) PURE
;
619 STDMETHOD(GetParentSite
)(THIS
) PURE
;
620 STDMETHOD(GetState
)(THIS
) PURE
;
621 STDMETHOD(DoDefaultAction
)(THIS
) PURE
;
622 STDMETHOD(GetSubMenu
)(THIS
) PURE
;
623 STDMETHOD(IsEmpty
)(THIS
) PURE
;
628 #define IShellMenuAcc_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
629 #define IShellMenuAcc_AddRef(T) (T)->lpVtbl->AddRef(T)
630 #define IShellMenuAcc_Release(T) (T)->lpVtbl->Release(T)
631 #define IShellMenuAcc_GetTop(T) (T)->lpVtbl->GetTop(T)
632 #define IShellMenuAcc_GetBottom(T) (T)->lpVtbl->GetBottom(T)
633 #define IShellMenuAcc_GetTracked(T) (T)->lpVtbl->GetTracked(T)
634 #define IShellMenuAcc_GetParentSite(T) (T)->lpVtbl->GetParentSite(T)
635 #define IShellMenuAcc_GetState(T) (T)->lpVtbl->GetState(T)
636 #define IShellMenuAcc_DoDefaultAction(T) (T)->lpVtbl->DoDefaultAction(T)
637 #define IShellMenuAcc_GetSubMenu(T) (T)->lpVtbl->GetSubMenu(T)
638 #define IShellMenuAcc_IsEmpty(T) (T)->lpVtbl->IsEmpty(T)
641 /*****************************************************************************
642 * IAddressBand interface
644 #define INTERFACE IBandSiteHelper
645 DECLARE_INTERFACE_(IBandSiteHelper
, IUnknown
)
648 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
649 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
650 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
651 /*** IBandSiteHelper ***/
652 STDMETHOD(LoadFromStreamBS
)(THIS_ IStream
*, REFGUID
, void **) PURE
;
653 STDMETHOD(SaveToStreamBS
)(THIS_ IUnknown
*, IStream
*) PURE
;
658 #define IBandSiteHelper_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
659 #define IBandSiteHelper_AddRef(T) (T)->lpVtbl->AddRef(T)
660 #define IBandSiteHelper_Release(T) (T)->lpVtbl->Release(T)
661 #define IBandSiteHelper_LoadFromStreamBS(T,a,b) (T)->lpVtbl->LoadFromStreamBS(T,a,b)
662 #define IBandSiteHelper_SaveToStreamBS(T,a,b) (T)->lpVtbl->SaveToStreamBS(T,a,b)
665 /*****************************************************************************
666 * IAddressBand interface
668 #define INTERFACE IShellBrowserService
669 DECLARE_INTERFACE_(IShellBrowserService
, IUnknown
)
672 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **ppv
) PURE
;
673 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
674 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
675 /*** IShellBrowserService ***/
676 STDMETHOD(GetPropertyBag
)(THIS_
long flags
, REFIID riid
, void **ppvObject
) PURE
;
681 #define IShellBrowserService_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
682 #define IShellBrowserService_AddRef(T) (T)->lpVtbl->AddRef(T)
683 #define IShellBrowserService_Release(T) (T)->lpVtbl->Release(T)
684 #define IShellBrowserService_GetPropertyBag(T,a,b,c) (T)->lpVtbl->GetPropertyBag(T,a,b,c)
687 /*****************************************************************************
688 * ITrayPriv interface
690 #define INTERFACE ITrayPriv
691 DECLARE_INTERFACE_(ITrayPriv
, IUnknown
)
694 STDMETHOD(QueryInterface
)(THIS_ REFIID
,PVOID
*) PURE
;
695 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
696 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
697 /*** IOleWindow methods ***/
698 STDMETHOD_(HRESULT
,GetWindow
)(THIS_ HWND
*) PURE
;
699 STDMETHOD_(HRESULT
,ContextSensitiveHelp
)(THIS_ BOOL
) PURE
;
701 STDMETHOD_(HRESULT
,Execute
)(THIS_ IShellFolder
*,LPCITEMIDLIST
) PURE
;
702 STDMETHOD_(HRESULT
,Unknown
)(THIS_ PVOID
,PVOID
,PVOID
,PVOID
) PURE
;
703 STDMETHOD_(HRESULT
,AppendMenu
)(THIS_ HMENU
*) PURE
;
708 #define ITrayPriv_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
709 #define ITrayPriv_AddRef(T) (T)->lpVtbl->AddRef(T)
710 #define ITrayPriv_Release(T) (T)->lpVtbl->Release(T)
711 #define ITrayPriv_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
712 #define ITrayPriv_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
713 #define ITrayPriv_Execute(T,a,b) (T)->lpVtbl->Execute(T,a,b)
714 #define ITrayPriv_Unknown(T,a,b,c,d) (T)->lpVtbl->Unknown(T,a,b,c,d)
715 #define ITrayPriv_AppendMenu(T,a) (T)->lpVtbl->AppendMenu(T,a)
718 /*****************************************************************************
721 // these resources are in shell32.dll
722 #define IDB_GOBUTTON_NORMAL 0x0e6
723 #define IDB_GOBUTTON_HOT 0x0e7
725 // band ids in internet toolbar
726 #define ITBBID_MENUBAND 1
727 #define ITBBID_BRANDBAND 5
728 #define ITBBID_TOOLSBAND 2
729 #define ITBBID_ADDRESSBAND 4
731 // commands in the CGID_PrivCITCommands command group handled by the internet toolbar
732 // there seems to be some support for hiding the menubar and an auto hide feature that are
733 // unavailable in the UI
734 #define ITID_TEXTLABELS 3
735 #define ITID_TOOLBARBANDSHOWN 4
736 #define ITID_ADDRESSBANDSHOWN 5
737 #define ITID_LINKSBANDSHOWN 6
738 #define ITID_MENUBANDSHOWN 12
739 #define ITID_AUTOHIDEENABLED 13
740 #define ITID_CUSTOMIZEENABLED 20
741 #define ITID_TOOLBARLOCKED 27
743 // commands in the CGID_BrandCmdGroup command group handled by the brand band
744 #define BBID_STARTANIMATION 1
745 #define BBID_STOPANIMATION 2
747 // undocumented flags for IShellMenu::SetShellFolder
748 #define SMSET_UNKNOWN08 0x08
749 #define SMSET_UNKNOWN10 0x10
751 BOOL WINAPI
ILGetDisplayNameEx(IShellFolder
*psf
, LPCITEMIDLIST pidl
, LPVOID path
, DWORD type
);
753 /* type parameter for ILGetDisplayNameEx() */
754 #define ILGDN_FORPARSING 0
755 #define ILGDN_NORMAL 1
756 #define ILGDN_INFOLDER 2
758 BOOL WINAPI
FileIconInit(BOOL bFullInit
);
759 void WINAPI
ShellDDEInit(BOOL bInit
);
760 DWORD WINAPI
WinList_Init(void);
762 HANDLE WINAPI
SHCreateDesktop(IShellDesktopTray
*);
763 BOOL WINAPI
SHDesktopMessageLoop(HANDLE
);
765 #define WM_GETISHELLBROWSER (WM_USER+7)
766 BOOL WINAPI
SetShellWindow(HWND
);
767 BOOL WINAPI
SetShellWindowEx(HWND
, HWND
);
768 BOOL WINAPI
RegisterShellHook(HWND
, DWORD
);
769 IStream
* WINAPI
SHGetViewStream(LPCITEMIDLIST
, DWORD
, LPCTSTR
, LPCTSTR
, LPCTSTR
);
770 BOOL WINAPI
SHIsEmptyStream(IStream
*);
772 typedef struct tagCREATEMRULISTA
780 } CREATEMRULISTA
, *LPCREATEMRULISTA
;
781 typedef struct tagCREATEMRULISTW
789 } CREATEMRULISTW
, *LPCREATEMRULISTW
;
791 #define MRU_STRING 0x0
792 #define MRU_BINARY 0x1
793 #define MRU_CACHEWRITE 0x2
795 HANDLE WINAPI
CreateMRUListW(LPCREATEMRULISTW
);
796 HANDLE WINAPI
CreateMRUListA(LPCREATEMRULISTA
);
797 INT WINAPI
AddMRUData(HANDLE
,LPCVOID
,DWORD
);
798 INT WINAPI
FindMRUData(HANDLE
,LPCVOID
,DWORD
,LPINT
);
799 VOID WINAPI
FreeMRUList(HANDLE
);
801 INT WINAPI
AddMRUStringW(HANDLE hList
, LPCWSTR lpszString
);
802 INT WINAPI
AddMRUStringA(HANDLE hList
, LPCSTR lpszString
);
803 BOOL WINAPI
DelMRUString(HANDLE hList
, INT nItemPos
);
804 INT WINAPI
FindMRUStringW(HANDLE hList
, LPCWSTR lpszString
, LPINT lpRegNum
);
805 INT WINAPI
FindMRUStringA(HANDLE hList
, LPCSTR lpszString
, LPINT lpRegNum
);
806 HANDLE WINAPI
CreateMRUListLazyW(const CREATEMRULISTW
*lpcml
, DWORD dwParam2
,
807 DWORD dwParam3
, DWORD dwParam4
);
808 HANDLE WINAPI
CreateMRUListLazyA(const CREATEMRULISTA
*lpcml
, DWORD dwParam2
,
809 DWORD dwParam3
, DWORD dwParam4
);
810 INT WINAPI
EnumMRUListW(HANDLE hList
, INT nItemPos
, LPVOID lpBuffer
,
812 INT WINAPI
EnumMRUListA(HANDLE hList
, INT nItemPos
, LPVOID lpBuffer
,
815 #define DC_NOSENDMSG 0x2000
816 BOOL WINAPI
DrawCaptionTempA(HWND
,HDC
,const RECT
*,HFONT
,HICON
,LPCSTR
,UINT
);
817 BOOL WINAPI
DrawCaptionTempW(HWND
,HDC
,const RECT
*,HFONT
,HICON
,LPCWSTR
,UINT
);
820 typedef CREATEMRULISTW CREATEMRULIST
, *PCREATEMRULIST
;
821 #define CreateMRUList CreateMRUListW
822 #define DrawCaptionTemp DrawCaptionTempW
824 typedef CREATEMRULISTA CREATEMRULIST
, *PCREATEMRULIST
;
825 #define CreateMRUList CreateMRUListA
826 #define DrawCaptionTemp DrawCaptionTempA
829 HRESULT WINAPI
SHInvokeDefaultCommand(HWND
,IShellFolder
*,LPCITEMIDLIST
);
831 HRESULT WINAPI
SHPropertyBag_ReadPOINTL(IPropertyBag
*,LPCWSTR
,POINTL
*);
833 HRESULT WINAPI
SHGetPerScreenResName(OUT LPWSTR lpResName
,
835 IN DWORD dwReserved
);
837 HRESULT WINAPI
SHPropertyBag_ReadStream(IPropertyBag
*,LPCWSTR
,IStream
**);
839 HWND WINAPI
SHCreateWorkerWindowA(LONG wndProc
, HWND hWndParent
, DWORD dwExStyle
,
840 DWORD dwStyle
, HMENU hMenu
, LONG z
);
842 HWND WINAPI
SHCreateWorkerWindowW(LONG wndProc
, HWND hWndParent
, DWORD dwExStyle
,
843 DWORD dwStyle
, HMENU hMenu
, LONG z
);
845 #define SHCreateWorkerWindow SHCreateWorkerWindowW
847 #define SHCreateWorkerWindow SHCreateWorkerWindowA
850 /*****************************************************************************
853 #include <pshpack1.h>
855 typedef struct tagSHELL_LINK_HEADER
857 /* The size of this structure (always 0x0000004C) */
859 /* CLSID = class identifier (always 00021401-0000-0000-C000-000000000046) */
861 /* Flags (SHELL_LINK_DATA_FLAGS) */
863 /* Informations about the link target: */
864 DWORD dwFileAttributes
;
865 FILETIME ftCreationTime
;
866 FILETIME ftLastAccessTime
;
867 FILETIME ftLastWriteTime
;
868 DWORD nFileSizeLow
; /* only the least significant 32 bits */
869 /* The index of an icon (signed?) */
871 /* The expected window state of an application launched by the link */
873 /* The keystrokes used to launch the application */
875 /* Reserved (must be zero) */
879 } SHELL_LINK_HEADER
, *LPSHELL_LINK_HEADER
;
881 /*****************************************************************************
883 * If cbHeaderSize == 0x0000001C then use SHELL_LINK_INFOA
884 * If cbHeaderSize >= 0x00000024 then use SHELL_LINK_INFOW
886 typedef struct tagSHELL_LINK_INFOA
888 /* Size of the link info data */
890 /* Size of this structure (ANSI: = 0x0000001C) */
892 /* Specifies which fields are present/populated (SLI_*) */
894 /* Offset of the VolumeID field (SHELL_LINK_INFO_VOLUME_ID) */
895 DWORD cbVolumeIDOffset
;
896 /* Offset of the LocalBasePath field (ANSI, NULL-terminated string) */
897 DWORD cbLocalBasePathOffset
;
898 /* Offset of the CommonNetworkRelativeLink field (SHELL_LINK_INFO_CNR_LINK) */
899 DWORD cbCommonNetworkRelativeLinkOffset
;
900 /* Offset of the CommonPathSuffix field (ANSI, NULL-terminated string) */
901 DWORD cbCommonPathSuffixOffset
;
902 } SHELL_LINK_INFOA
, *LPSHELL_LINK_INFOA
;
904 typedef struct tagSHELL_LINK_INFOW
906 /* Size of the link info data */
908 /* Size of this structure (Unicode: >= 0x00000024) */
910 /* Specifies which fields are present/populated (SLI_*) */
912 /* Offset of the VolumeID field (SHELL_LINK_INFO_VOLUME_ID) */
913 DWORD cbVolumeIDOffset
;
914 /* Offset of the LocalBasePath field (ANSI, NULL-terminated string) */
915 DWORD cbLocalBasePathOffset
;
916 /* Offset of the CommonNetworkRelativeLink field (SHELL_LINK_INFO_CNR_LINK) */
917 DWORD cbCommonNetworkRelativeLinkOffset
;
918 /* Offset of the CommonPathSuffix field (ANSI, NULL-terminated string) */
919 DWORD cbCommonPathSuffixOffset
;
920 /* Offset of the LocalBasePathUnicode field (Unicode, NULL-terminated string) */
921 DWORD cbLocalBasePathUnicodeOffset
;
922 /* Offset of the CommonPathSuffixUnicode field (Unicode, NULL-terminated string) */
923 DWORD cbCommonPathSuffixUnicodeOffset
;
924 } SHELL_LINK_INFOW
, *LPSHELL_LINK_INFOW
;
926 /* VolumeID, LocalBasePath, LocalBasePathUnicode(cbHeaderSize >= 0x24) are present */
927 #define SLI_VALID_LOCAL 0x00000001
928 /* CommonNetworkRelativeLink is present */
929 #define SLI_VALID_NETWORK 0x00000002
931 /*****************************************************************************
932 * SHELL_LINK_INFO_VOLUME_IDA/W
933 * If cbVolumeLabelOffset != 0x00000014 (should be 0x00000010) then use
934 * SHELL_LINK_INFO_VOLUME_IDA
935 * If cbVolumeLabelOffset == 0x00000014 then use SHELL_LINK_INFO_VOLUME_IDW
937 typedef struct tagSHELL_LINK_INFO_VOLUME_IDA
939 /* Size of the VolumeID field (> 0x00000010) */
941 /* Drive type of the drive the link target is stored on (DRIVE_*) */
943 /* Serial number of the volume the link target is stored on */
944 DWORD nDriveSerialNumber
;
945 /* Offset of the volume label (ANSI, NULL-terminated string).
946 Must be != 0x00000014 (see tagSHELL_LINK_INFO_VOLUME_IDW) */
947 DWORD cbVolumeLabelOffset
;
948 } SHELL_LINK_INFO_VOLUME_IDA
, *LPSHELL_LINK_INFO_VOLUME_IDA
;
950 typedef struct tagSHELL_LINK_INFO_VOLUME_IDW
952 /* Size of the VolumeID field (> 0x00000010) */
954 /* Drive type of the drive the link target is stored on (DRIVE_*) */
956 /* Serial number of the volume the link target is stored on */
957 DWORD nDriveSerialNumber
;
958 /* Offset of the volume label (ANSI, NULL-terminated string).
959 If the value of this field is 0x00000014, ignore it and use
960 cbVolumeLabelUnicodeOffset! */
961 DWORD cbVolumeLabelOffset
;
962 /* Offset of the volume label (Unicode, NULL-terminated string).
963 If the value of the VolumeLabelOffset field is not 0x00000014,
964 this field must be ignored (==> it doesn't exists ==> ANSI). */
965 DWORD cbVolumeLabelUnicodeOffset
;
966 } SHELL_LINK_INFO_VOLUME_IDW
, *LPSHELL_LINK_INFO_VOLUME_IDW
;
968 /*****************************************************************************
969 * SHELL_LINK_INFO_CNR_LINKA/W (CNR = Common Network Relative)
970 * If cbNetNameOffset == 0x00000014 then use SHELL_LINK_INFO_CNR_LINKA
971 * If cbNetNameOffset > 0x00000014 then use SHELL_LINK_INFO_CNR_LINKW
973 typedef struct tagSHELL_LINK_INFO_CNR_LINKA
975 /* Size of the CommonNetworkRelativeLink field (>= 0x00000014) */
977 /* Specifies which fields are present/populated (SLI_CNR_*) */
979 /* Offset of the NetName field (ANSI, NULL\96terminated string) */
980 DWORD cbNetNameOffset
;
981 /* Offset of the DeviceName field (ANSI, NULL\96terminated string) */
982 DWORD cbDeviceNameOffset
;
983 /* Type of the network provider (WNNC_NET_* defined in winnetwk.h) */
984 DWORD dwNetworkProviderType
;
985 } SHELL_LINK_INFO_CNR_LINKA
, *LPSHELL_LINK_INFO_CNR_LINKA
;
987 typedef struct tagSHELL_LINK_INFO_CNR_LINKW
989 /* Size of the CommonNetworkRelativeLink field (>= 0x00000014) */
991 /* Specifies which fields are present/populated (SLI_CNR_*) */
993 /* Offset of the NetName field (ANSI, NULL\96terminated string) */
994 DWORD cbNetNameOffset
;
995 /* Offset of the DeviceName field (ANSI, NULL\96terminated string) */
996 DWORD cbDeviceNameOffset
;
997 /* Type of the network provider (WNNC_NET_* defined in winnetwk.h) */
998 DWORD dwNetworkProviderType
;
999 /* Offset of the NetNameUnicode field (Unicode, NULL\96terminated string) */
1000 DWORD cbNetNameUnicodeOffset
;
1001 /* Offset of the DeviceNameUnicode field (Unicode, NULL\96terminated string) */
1002 DWORD cbDeviceNameUnicodeOffset
;
1003 } SHELL_LINK_INFO_CNR_LINKW
, *LPSHELL_LINK_INFO_CNR_LINKW
;
1005 /* DeviceName is present */
1006 #define SLI_CNR_VALID_DEVICE 0x00000001
1007 /* NetworkProviderType is present */
1008 #define SLI_CNR_VALID_NET_TYPE 0x00000002
1010 /*****************************************************************************
1011 * Shell Link Extra Data (IShellLinkDataList)
1013 typedef struct tagEXP_TRACKER
1015 /* .cbSize = 0x00000060, .dwSignature = 0xa0000003 */
1016 DATABLOCK_HEADER dbh
;
1017 /* Length >= 0x00000058 */
1019 /* Must be 0x00000000 */
1021 /* NetBIOS name (ANSI, unused bytes are set to zero) */
1022 CHAR szMachineID
[16]; /* "variable" >= 16 (?) */
1023 /* Some GUIDs for the Link Tracking service (from the FS?) */
1024 GUID guidDroidVolume
;
1025 GUID guidDroidObject
;
1026 GUID guidDroidBirthVolume
;
1027 GUID guidDroidBirthObject
;
1028 } EXP_TRACKER
, *LPEXP_TRACKER
;
1030 typedef struct tagEXP_SHIM
1032 /* .cbSize >= 0x00000088, .dwSignature = 0xa0000008 */
1033 DATABLOCK_HEADER dbh
;
1034 /* Name of a shim layer to apply (Unicode, unused bytes are set to zero) */
1035 WCHAR szwLayerName
[64]; /* "variable" >= 64 */
1036 } EXP_SHIM
, *LPEXP_SHIM
;
1038 typedef struct tagEXP_KNOWN_FOLDER
1040 /* .cbSize = 0x0000001c, .dwSignature = 0xa000000b */
1041 DATABLOCK_HEADER dbh
;
1042 /* A GUID value that identifies a known folder */
1043 GUID guidKnownFolder
;
1044 /* Specifies the location of the ItemID of the first child
1045 segment of the IDList specified by guidKnownFolder */
1047 } EXP_KNOWN_FOLDER
, *LPEXP_KNOWN_FOLDER
;
1049 typedef struct tagEXP_VISTA_ID_LIST
1051 /* .cbSize >= 0x0000000a, .dwSignature = 0xa000000c */
1052 DATABLOCK_HEADER dbh
;
1053 /* Specifies an alternate IDList that can be used instead
1054 of the "normal" IDList (SLDF_HAS_ID_LIST) */
1055 /* LPITEMIDLIST pIDList; (variable) */
1056 } EXP_VISTA_ID_LIST
, *LPEXP_VISTA_ID_LIST
;
1058 #define EXP_TRACKER_SIG 0xa0000003
1059 #define EXP_SHIM_SIG 0xa0000008
1060 #define EXP_KNOWN_FOLDER_SIG 0xa000000b
1061 #define EXP_VISTA_ID_LIST_SIG 0xa000000c
1063 #include <poppack.h>
1067 #endif /* defined(__cplusplus) */
1069 #endif // __SHLOBJ_UNDOC__H