Fixed issue #546: Exporting without specifying a zip filename sends all zip output...
[TortoiseGit.git] / src / Utils / Win7.h
blob91f55b3febe5edf6e3e1ff4d62769baca3d9325b
1 // TortoiseSVN - a Windows shell extension for easy version control
3 // Copyright (C) 2009-2010 - TortoiseSVN
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 // helper:
21 // declares and defines stuff which is not available in the Vista SDK or
22 // which isn't available in the Win7 SDK but not unless NTDDI_VERSION is
23 // set to NTDDI_WIN7
24 #pragma once
25 #if (NTDDI_VERSION < 0x06010000)
28 * Message filter info values (CHANGEFILTERSTRUCT.ExtStatus)
30 #define MSGFLTINFO_NONE (0)
31 #define MSGFLTINFO_ALREADYALLOWED_FORWND (1)
32 #define MSGFLTINFO_ALREADYDISALLOWED_FORWND (2)
33 #define MSGFLTINFO_ALLOWED_HIGHER (3)
35 typedef struct tagCHANGEFILTERSTRUCT {
36 DWORD cbSize;
37 DWORD ExtStatus;
38 } CHANGEFILTERSTRUCT, *PCHANGEFILTERSTRUCT;
41 * Message filter action values (action parameter to ChangeWindowMessageFilterEx)
43 #define MSGFLT_RESET (0)
44 #define MSGFLT_ALLOW (1)
45 #define MSGFLT_DISALLOW (2)
47 #ifdef __cplusplus
49 // Define operator overloads to enable bit operations on enum values that are
50 // used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
51 // operators on YOUR_TYPE.
53 // Moved here from objbase.w.
55 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
56 extern "C++" { \
57 inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) | ((int)b)); } \
58 inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \
59 inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) & ((int)b)); } \
60 inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \
61 inline ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((int)a)); } \
62 inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) ^ ((int)b)); } \
63 inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \
65 #else
66 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) // NOP, C allows these operators.
67 #endif
69 /* this ALWAYS GENERATED file contains the definitions for the interfaces */
72 /* File created by MIDL compiler version 7.00.0555 */
73 /* Compiler settings for objectarray.idl:
74 Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
75 protocol : dce , ms_ext, c_ext, robust
76 error checks: allocation ref bounds_check enum stub_data
77 VC __declspec() decoration level:
78 __declspec(uuid()), __declspec(selectany), __declspec(novtable)
79 DECLSPEC_UUID(), MIDL_INTERFACE()
81 /* @@MIDL_FILE_HEADING( ) */
83 #pragma warning( disable: 4049 ) /* more than 64k source lines */
86 /* verify that the <rpcndr.h> version is high enough to compile this file*/
87 #ifndef __REQUIRED_RPCNDR_H_VERSION__
88 #define __REQUIRED_RPCNDR_H_VERSION__ 500
89 #endif
91 /* verify that the <rpcsal.h> version is high enough to compile this file*/
92 #ifndef __REQUIRED_RPCSAL_H_VERSION__
93 #define __REQUIRED_RPCSAL_H_VERSION__ 100
94 #endif
96 #include "rpc.h"
97 #include "rpcndr.h"
99 #ifndef __RPCNDR_H_VERSION__
100 #error this stub requires an updated version of <rpcndr.h>
101 #endif // __RPCNDR_H_VERSION__
103 #ifndef COM_NO_WINDOWS_H
104 #include "windows.h"
105 #include "ole2.h"
106 #endif /*COM_NO_WINDOWS_H*/
108 #ifndef __objectarray_h__
109 #define __objectarray_h__
111 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
112 #pragma once
113 #endif
115 /* Forward Declarations */
117 #ifndef __IObjectArray_FWD_DEFINED__
118 #define __IObjectArray_FWD_DEFINED__
119 typedef interface IObjectArray IObjectArray;
120 #endif /* __IObjectArray_FWD_DEFINED__ */
123 #ifndef __IObjectCollection_FWD_DEFINED__
124 #define __IObjectCollection_FWD_DEFINED__
125 typedef interface IObjectCollection IObjectCollection;
126 #endif /* __IObjectCollection_FWD_DEFINED__ */
129 /* header files for imported files */
130 #include "oaidl.h"
131 #include "ocidl.h"
133 #ifdef __cplusplus
134 extern "C"{
135 #endif
138 /* interface __MIDL_itf_shobjidl_0000_0093 */
139 /* [local] */
141 #ifdef MIDL_PASS
142 typedef IUnknown *HIMAGELIST;
144 #endif
145 typedef /* [v1_enum] */
146 enum THUMBBUTTONFLAGS
147 { THBF_ENABLED = 0,
148 THBF_DISABLED = 0x1,
149 THBF_DISMISSONCLICK = 0x2,
150 THBF_NOBACKGROUND = 0x4,
151 THBF_HIDDEN = 0x8,
152 THBF_NONINTERACTIVE = 0x10
153 } THUMBBUTTONFLAGS;
155 DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)
156 typedef /* [v1_enum] */
157 enum THUMBBUTTONMASK
158 { THB_BITMAP = 0x1,
159 THB_ICON = 0x2,
160 THB_TOOLTIP = 0x4,
161 THB_FLAGS = 0x8
162 } THUMBBUTTONMASK;
164 DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)
165 #include <pshpack8.h>
166 typedef struct THUMBBUTTON
168 THUMBBUTTONMASK dwMask;
169 UINT iId;
170 UINT iBitmap;
171 HICON hIcon;
172 WCHAR szTip[ 260 ];
173 THUMBBUTTONFLAGS dwFlags;
174 } THUMBBUTTON;
176 typedef struct THUMBBUTTON *LPTHUMBBUTTON;
178 #include <poppack.h>
179 #define THBN_CLICKED 0x1800
182 extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_0093_v0_0_c_ifspec;
183 extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_0093_v0_0_s_ifspec;
185 #ifndef __ITaskbarList3_INTERFACE_DEFINED__
186 #define __ITaskbarList3_INTERFACE_DEFINED__
188 /* interface ITaskbarList3 */
189 /* [object][uuid] */
191 typedef /* [v1_enum] */
192 enum TBPFLAG
193 { TBPF_NOPROGRESS = 0,
194 TBPF_INDETERMINATE = 0x1,
195 TBPF_NORMAL = 0x2,
196 TBPF_ERROR = 0x4,
197 TBPF_PAUSED = 0x8
198 } TBPFLAG;
200 DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)
202 EXTERN_C const IID IID_ITaskbarList3;
204 #if defined(__cplusplus) && !defined(CINTERFACE)
206 MIDL_INTERFACE("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf")
207 ITaskbarList3 : public ITaskbarList2
209 public:
210 virtual HRESULT STDMETHODCALLTYPE SetProgressValue(
211 /* [in] */ __RPC__in HWND hwnd,
212 /* [in] */ ULONGLONG ullCompleted,
213 /* [in] */ ULONGLONG ullTotal) = 0;
215 virtual HRESULT STDMETHODCALLTYPE SetProgressState(
216 /* [in] */ __RPC__in HWND hwnd,
217 /* [in] */ TBPFLAG tbpFlags) = 0;
219 virtual HRESULT STDMETHODCALLTYPE RegisterTab(
220 /* [in] */ __RPC__in HWND hwndTab,
221 /* [in] */ __RPC__in HWND hwndMDI) = 0;
223 virtual HRESULT STDMETHODCALLTYPE UnregisterTab(
224 /* [in] */ __RPC__in HWND hwndTab) = 0;
226 virtual HRESULT STDMETHODCALLTYPE SetTabOrder(
227 /* [in] */ __RPC__in HWND hwndTab,
228 /* [in] */ __RPC__in HWND hwndInsertBefore) = 0;
230 virtual HRESULT STDMETHODCALLTYPE SetTabActive(
231 /* [in] */ __RPC__in HWND hwndTab,
232 /* [in] */ __RPC__in HWND hwndMDI,
233 /* [in] */ DWORD dwReserved) = 0;
235 virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(
236 /* [in] */ __RPC__in HWND hwnd,
237 /* [in] */ UINT cButtons,
238 /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton) = 0;
240 virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(
241 /* [in] */ __RPC__in HWND hwnd,
242 /* [in] */ UINT cButtons,
243 /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton) = 0;
245 virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(
246 /* [in] */ __RPC__in HWND hwnd,
247 /* [in] */ __RPC__in_opt HIMAGELIST himl) = 0;
249 virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(
250 /* [in] */ __RPC__in HWND hwnd,
251 /* [in] */ __RPC__in HICON hIcon,
252 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszDescription) = 0;
254 virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(
255 /* [in] */ __RPC__in HWND hwnd,
256 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszTip) = 0;
258 virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(
259 /* [in] */ __RPC__in HWND hwnd,
260 /* [in] */ __RPC__in RECT *prcClip) = 0;
264 #else /* C style interface */
266 typedef struct ITaskbarList3Vtbl
268 BEGIN_INTERFACE
270 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
271 __RPC__in ITaskbarList3 * This,
272 /* [in] */ __RPC__in REFIID riid,
273 /* [annotation][iid_is][out] */
274 __RPC__deref_out void **ppvObject);
276 ULONG ( STDMETHODCALLTYPE *AddRef )(
277 __RPC__in ITaskbarList3 * This);
279 ULONG ( STDMETHODCALLTYPE *Release )(
280 __RPC__in ITaskbarList3 * This);
282 HRESULT ( STDMETHODCALLTYPE *HrInit )(
283 __RPC__in ITaskbarList3 * This);
285 HRESULT ( STDMETHODCALLTYPE *AddTab )(
286 __RPC__in ITaskbarList3 * This,
287 /* [in] */ __RPC__in HWND hwnd);
289 HRESULT ( STDMETHODCALLTYPE *DeleteTab )(
290 __RPC__in ITaskbarList3 * This,
291 /* [in] */ __RPC__in HWND hwnd);
293 HRESULT ( STDMETHODCALLTYPE *ActivateTab )(
294 __RPC__in ITaskbarList3 * This,
295 /* [in] */ __RPC__in HWND hwnd);
297 HRESULT ( STDMETHODCALLTYPE *SetActiveAlt )(
298 __RPC__in ITaskbarList3 * This,
299 /* [in] */ __RPC__in HWND hwnd);
301 HRESULT ( STDMETHODCALLTYPE *MarkFullscreenWindow )(
302 __RPC__in ITaskbarList3 * This,
303 /* [in] */ __RPC__in HWND hwnd,
304 /* [in] */ BOOL fFullscreen);
306 HRESULT ( STDMETHODCALLTYPE *SetProgressValue )(
307 __RPC__in ITaskbarList3 * This,
308 /* [in] */ __RPC__in HWND hwnd,
309 /* [in] */ ULONGLONG ullCompleted,
310 /* [in] */ ULONGLONG ullTotal);
312 HRESULT ( STDMETHODCALLTYPE *SetProgressState )(
313 __RPC__in ITaskbarList3 * This,
314 /* [in] */ __RPC__in HWND hwnd,
315 /* [in] */ TBPFLAG tbpFlags);
317 HRESULT ( STDMETHODCALLTYPE *RegisterTab )(
318 __RPC__in ITaskbarList3 * This,
319 /* [in] */ __RPC__in HWND hwndTab,
320 /* [in] */ __RPC__in HWND hwndMDI);
322 HRESULT ( STDMETHODCALLTYPE *UnregisterTab )(
323 __RPC__in ITaskbarList3 * This,
324 /* [in] */ __RPC__in HWND hwndTab);
326 HRESULT ( STDMETHODCALLTYPE *SetTabOrder )(
327 __RPC__in ITaskbarList3 * This,
328 /* [in] */ __RPC__in HWND hwndTab,
329 /* [in] */ __RPC__in HWND hwndInsertBefore);
331 HRESULT ( STDMETHODCALLTYPE *SetTabActive )(
332 __RPC__in ITaskbarList3 * This,
333 /* [in] */ __RPC__in HWND hwndTab,
334 /* [in] */ __RPC__in HWND hwndMDI,
335 /* [in] */ DWORD dwReserved);
337 HRESULT ( STDMETHODCALLTYPE *ThumbBarAddButtons )(
338 __RPC__in ITaskbarList3 * This,
339 /* [in] */ __RPC__in HWND hwnd,
340 /* [in] */ UINT cButtons,
341 /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton);
343 HRESULT ( STDMETHODCALLTYPE *ThumbBarUpdateButtons )(
344 __RPC__in ITaskbarList3 * This,
345 /* [in] */ __RPC__in HWND hwnd,
346 /* [in] */ UINT cButtons,
347 /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton);
349 HRESULT ( STDMETHODCALLTYPE *ThumbBarSetImageList )(
350 __RPC__in ITaskbarList3 * This,
351 /* [in] */ __RPC__in HWND hwnd,
352 /* [in] */ __RPC__in_opt HIMAGELIST himl);
354 HRESULT ( STDMETHODCALLTYPE *SetOverlayIcon )(
355 __RPC__in ITaskbarList3 * This,
356 /* [in] */ __RPC__in HWND hwnd,
357 /* [in] */ __RPC__in HICON hIcon,
358 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszDescription);
360 HRESULT ( STDMETHODCALLTYPE *SetThumbnailTooltip )(
361 __RPC__in ITaskbarList3 * This,
362 /* [in] */ __RPC__in HWND hwnd,
363 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszTip);
365 HRESULT ( STDMETHODCALLTYPE *SetThumbnailClip )(
366 __RPC__in ITaskbarList3 * This,
367 /* [in] */ __RPC__in HWND hwnd,
368 /* [in] */ __RPC__in RECT *prcClip);
370 END_INTERFACE
371 } ITaskbarList3Vtbl;
373 interface ITaskbarList3
375 CONST_VTBL struct ITaskbarList3Vtbl *lpVtbl;
380 #ifdef COBJMACROS
383 #define ITaskbarList3_QueryInterface(This,riid,ppvObject) \
384 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
386 #define ITaskbarList3_AddRef(This) \
387 ( (This)->lpVtbl -> AddRef(This) )
389 #define ITaskbarList3_Release(This) \
390 ( (This)->lpVtbl -> Release(This) )
393 #define ITaskbarList3_HrInit(This) \
394 ( (This)->lpVtbl -> HrInit(This) )
396 #define ITaskbarList3_AddTab(This,hwnd) \
397 ( (This)->lpVtbl -> AddTab(This,hwnd) )
399 #define ITaskbarList3_DeleteTab(This,hwnd) \
400 ( (This)->lpVtbl -> DeleteTab(This,hwnd) )
402 #define ITaskbarList3_ActivateTab(This,hwnd) \
403 ( (This)->lpVtbl -> ActivateTab(This,hwnd) )
405 #define ITaskbarList3_SetActiveAlt(This,hwnd) \
406 ( (This)->lpVtbl -> SetActiveAlt(This,hwnd) )
409 #define ITaskbarList3_MarkFullscreenWindow(This,hwnd,fFullscreen) \
410 ( (This)->lpVtbl -> MarkFullscreenWindow(This,hwnd,fFullscreen) )
413 #define ITaskbarList3_SetProgressValue(This,hwnd,ullCompleted,ullTotal) \
414 ( (This)->lpVtbl -> SetProgressValue(This,hwnd,ullCompleted,ullTotal) )
416 #define ITaskbarList3_SetProgressState(This,hwnd,tbpFlags) \
417 ( (This)->lpVtbl -> SetProgressState(This,hwnd,tbpFlags) )
419 #define ITaskbarList3_RegisterTab(This,hwndTab,hwndMDI) \
420 ( (This)->lpVtbl -> RegisterTab(This,hwndTab,hwndMDI) )
422 #define ITaskbarList3_UnregisterTab(This,hwndTab) \
423 ( (This)->lpVtbl -> UnregisterTab(This,hwndTab) )
425 #define ITaskbarList3_SetTabOrder(This,hwndTab,hwndInsertBefore) \
426 ( (This)->lpVtbl -> SetTabOrder(This,hwndTab,hwndInsertBefore) )
428 #define ITaskbarList3_SetTabActive(This,hwndTab,hwndMDI,dwReserved) \
429 ( (This)->lpVtbl -> SetTabActive(This,hwndTab,hwndMDI,dwReserved) )
431 #define ITaskbarList3_ThumbBarAddButtons(This,hwnd,cButtons,pButton) \
432 ( (This)->lpVtbl -> ThumbBarAddButtons(This,hwnd,cButtons,pButton) )
434 #define ITaskbarList3_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) \
435 ( (This)->lpVtbl -> ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) )
437 #define ITaskbarList3_ThumbBarSetImageList(This,hwnd,himl) \
438 ( (This)->lpVtbl -> ThumbBarSetImageList(This,hwnd,himl) )
440 #define ITaskbarList3_SetOverlayIcon(This,hwnd,hIcon,pszDescription) \
441 ( (This)->lpVtbl -> SetOverlayIcon(This,hwnd,hIcon,pszDescription) )
443 #define ITaskbarList3_SetThumbnailTooltip(This,hwnd,pszTip) \
444 ( (This)->lpVtbl -> SetThumbnailTooltip(This,hwnd,pszTip) )
446 #define ITaskbarList3_SetThumbnailClip(This,hwnd,prcClip) \
447 ( (This)->lpVtbl -> SetThumbnailClip(This,hwnd,prcClip) )
449 #endif /* COBJMACROS */
452 #endif /* C style interface */
457 #endif /* __ITaskbarList3_INTERFACE_DEFINED__ */
460 #ifndef __ITaskbarList4_INTERFACE_DEFINED__
461 #define __ITaskbarList4_INTERFACE_DEFINED__
463 /* interface ITaskbarList4 */
464 /* [object][uuid] */
466 typedef /* [v1_enum] */
467 enum STPFLAG
468 { STPF_NONE = 0,
469 STPF_USEAPPTHUMBNAILALWAYS = 0x1,
470 STPF_USEAPPTHUMBNAILWHENACTIVE = 0x2,
471 STPF_USEAPPPEEKALWAYS = 0x4,
472 STPF_USEAPPPEEKWHENACTIVE = 0x8
473 } STPFLAG;
475 DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)
477 EXTERN_C const IID IID_ITaskbarList4;
479 #if defined(__cplusplus) && !defined(CINTERFACE)
481 MIDL_INTERFACE("c43dc798-95d1-4bea-9030-bb99e2983a1a")
482 ITaskbarList4 : public ITaskbarList3
484 public:
485 virtual HRESULT STDMETHODCALLTYPE SetTabProperties(
486 /* [in] */ __RPC__in HWND hwndTab,
487 /* [in] */ STPFLAG stpFlags) = 0;
491 #else /* C style interface */
493 typedef struct ITaskbarList4Vtbl
495 BEGIN_INTERFACE
497 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
498 __RPC__in ITaskbarList4 * This,
499 /* [in] */ __RPC__in REFIID riid,
500 /* [annotation][iid_is][out] */
501 __RPC__deref_out void **ppvObject);
503 ULONG ( STDMETHODCALLTYPE *AddRef )(
504 __RPC__in ITaskbarList4 * This);
506 ULONG ( STDMETHODCALLTYPE *Release )(
507 __RPC__in ITaskbarList4 * This);
509 HRESULT ( STDMETHODCALLTYPE *HrInit )(
510 __RPC__in ITaskbarList4 * This);
512 HRESULT ( STDMETHODCALLTYPE *AddTab )(
513 __RPC__in ITaskbarList4 * This,
514 /* [in] */ __RPC__in HWND hwnd);
516 HRESULT ( STDMETHODCALLTYPE *DeleteTab )(
517 __RPC__in ITaskbarList4 * This,
518 /* [in] */ __RPC__in HWND hwnd);
520 HRESULT ( STDMETHODCALLTYPE *ActivateTab )(
521 __RPC__in ITaskbarList4 * This,
522 /* [in] */ __RPC__in HWND hwnd);
524 HRESULT ( STDMETHODCALLTYPE *SetActiveAlt )(
525 __RPC__in ITaskbarList4 * This,
526 /* [in] */ __RPC__in HWND hwnd);
528 HRESULT ( STDMETHODCALLTYPE *MarkFullscreenWindow )(
529 __RPC__in ITaskbarList4 * This,
530 /* [in] */ __RPC__in HWND hwnd,
531 /* [in] */ BOOL fFullscreen);
533 HRESULT ( STDMETHODCALLTYPE *SetProgressValue )(
534 __RPC__in ITaskbarList4 * This,
535 /* [in] */ __RPC__in HWND hwnd,
536 /* [in] */ ULONGLONG ullCompleted,
537 /* [in] */ ULONGLONG ullTotal);
539 HRESULT ( STDMETHODCALLTYPE *SetProgressState )(
540 __RPC__in ITaskbarList4 * This,
541 /* [in] */ __RPC__in HWND hwnd,
542 /* [in] */ TBPFLAG tbpFlags);
544 HRESULT ( STDMETHODCALLTYPE *RegisterTab )(
545 __RPC__in ITaskbarList4 * This,
546 /* [in] */ __RPC__in HWND hwndTab,
547 /* [in] */ __RPC__in HWND hwndMDI);
549 HRESULT ( STDMETHODCALLTYPE *UnregisterTab )(
550 __RPC__in ITaskbarList4 * This,
551 /* [in] */ __RPC__in HWND hwndTab);
553 HRESULT ( STDMETHODCALLTYPE *SetTabOrder )(
554 __RPC__in ITaskbarList4 * This,
555 /* [in] */ __RPC__in HWND hwndTab,
556 /* [in] */ __RPC__in HWND hwndInsertBefore);
558 HRESULT ( STDMETHODCALLTYPE *SetTabActive )(
559 __RPC__in ITaskbarList4 * This,
560 /* [in] */ __RPC__in HWND hwndTab,
561 /* [in] */ __RPC__in HWND hwndMDI,
562 /* [in] */ DWORD dwReserved);
564 HRESULT ( STDMETHODCALLTYPE *ThumbBarAddButtons )(
565 __RPC__in ITaskbarList4 * This,
566 /* [in] */ __RPC__in HWND hwnd,
567 /* [in] */ UINT cButtons,
568 /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton);
570 HRESULT ( STDMETHODCALLTYPE *ThumbBarUpdateButtons )(
571 __RPC__in ITaskbarList4 * This,
572 /* [in] */ __RPC__in HWND hwnd,
573 /* [in] */ UINT cButtons,
574 /* [size_is][in] */ __RPC__in_ecount_full(cButtons) LPTHUMBBUTTON pButton);
576 HRESULT ( STDMETHODCALLTYPE *ThumbBarSetImageList )(
577 __RPC__in ITaskbarList4 * This,
578 /* [in] */ __RPC__in HWND hwnd,
579 /* [in] */ __RPC__in_opt HIMAGELIST himl);
581 HRESULT ( STDMETHODCALLTYPE *SetOverlayIcon )(
582 __RPC__in ITaskbarList4 * This,
583 /* [in] */ __RPC__in HWND hwnd,
584 /* [in] */ __RPC__in HICON hIcon,
585 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszDescription);
587 HRESULT ( STDMETHODCALLTYPE *SetThumbnailTooltip )(
588 __RPC__in ITaskbarList4 * This,
589 /* [in] */ __RPC__in HWND hwnd,
590 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszTip);
592 HRESULT ( STDMETHODCALLTYPE *SetThumbnailClip )(
593 __RPC__in ITaskbarList4 * This,
594 /* [in] */ __RPC__in HWND hwnd,
595 /* [in] */ __RPC__in RECT *prcClip);
597 HRESULT ( STDMETHODCALLTYPE *SetTabProperties )(
598 __RPC__in ITaskbarList4 * This,
599 /* [in] */ __RPC__in HWND hwndTab,
600 /* [in] */ STPFLAG stpFlags);
602 END_INTERFACE
603 } ITaskbarList4Vtbl;
605 interface ITaskbarList4
607 CONST_VTBL struct ITaskbarList4Vtbl *lpVtbl;
612 #ifdef COBJMACROS
615 #define ITaskbarList4_QueryInterface(This,riid,ppvObject) \
616 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
618 #define ITaskbarList4_AddRef(This) \
619 ( (This)->lpVtbl -> AddRef(This) )
621 #define ITaskbarList4_Release(This) \
622 ( (This)->lpVtbl -> Release(This) )
625 #define ITaskbarList4_HrInit(This) \
626 ( (This)->lpVtbl -> HrInit(This) )
628 #define ITaskbarList4_AddTab(This,hwnd) \
629 ( (This)->lpVtbl -> AddTab(This,hwnd) )
631 #define ITaskbarList4_DeleteTab(This,hwnd) \
632 ( (This)->lpVtbl -> DeleteTab(This,hwnd) )
634 #define ITaskbarList4_ActivateTab(This,hwnd) \
635 ( (This)->lpVtbl -> ActivateTab(This,hwnd) )
637 #define ITaskbarList4_SetActiveAlt(This,hwnd) \
638 ( (This)->lpVtbl -> SetActiveAlt(This,hwnd) )
641 #define ITaskbarList4_MarkFullscreenWindow(This,hwnd,fFullscreen) \
642 ( (This)->lpVtbl -> MarkFullscreenWindow(This,hwnd,fFullscreen) )
645 #define ITaskbarList4_SetProgressValue(This,hwnd,ullCompleted,ullTotal) \
646 ( (This)->lpVtbl -> SetProgressValue(This,hwnd,ullCompleted,ullTotal) )
648 #define ITaskbarList4_SetProgressState(This,hwnd,tbpFlags) \
649 ( (This)->lpVtbl -> SetProgressState(This,hwnd,tbpFlags) )
651 #define ITaskbarList4_RegisterTab(This,hwndTab,hwndMDI) \
652 ( (This)->lpVtbl -> RegisterTab(This,hwndTab,hwndMDI) )
654 #define ITaskbarList4_UnregisterTab(This,hwndTab) \
655 ( (This)->lpVtbl -> UnregisterTab(This,hwndTab) )
657 #define ITaskbarList4_SetTabOrder(This,hwndTab,hwndInsertBefore) \
658 ( (This)->lpVtbl -> SetTabOrder(This,hwndTab,hwndInsertBefore) )
660 #define ITaskbarList4_SetTabActive(This,hwndTab,hwndMDI,dwReserved) \
661 ( (This)->lpVtbl -> SetTabActive(This,hwndTab,hwndMDI,dwReserved) )
663 #define ITaskbarList4_ThumbBarAddButtons(This,hwnd,cButtons,pButton) \
664 ( (This)->lpVtbl -> ThumbBarAddButtons(This,hwnd,cButtons,pButton) )
666 #define ITaskbarList4_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) \
667 ( (This)->lpVtbl -> ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) )
669 #define ITaskbarList4_ThumbBarSetImageList(This,hwnd,himl) \
670 ( (This)->lpVtbl -> ThumbBarSetImageList(This,hwnd,himl) )
672 #define ITaskbarList4_SetOverlayIcon(This,hwnd,hIcon,pszDescription) \
673 ( (This)->lpVtbl -> SetOverlayIcon(This,hwnd,hIcon,pszDescription) )
675 #define ITaskbarList4_SetThumbnailTooltip(This,hwnd,pszTip) \
676 ( (This)->lpVtbl -> SetThumbnailTooltip(This,hwnd,pszTip) )
678 #define ITaskbarList4_SetThumbnailClip(This,hwnd,prcClip) \
679 ( (This)->lpVtbl -> SetThumbnailClip(This,hwnd,prcClip) )
682 #define ITaskbarList4_SetTabProperties(This,hwndTab,stpFlags) \
683 ( (This)->lpVtbl -> SetTabProperties(This,hwndTab,stpFlags) )
685 #endif /* COBJMACROS */
688 #endif /* C style interface */
693 #endif /* __ITaskbarList4_INTERFACE_DEFINED__ */
696 #ifndef __IObjectArray_INTERFACE_DEFINED__
697 #define __IObjectArray_INTERFACE_DEFINED__
699 /* interface IObjectArray */
700 /* [unique][object][uuid][helpstring] */
703 EXTERN_C const IID IID_IObjectArray;
705 #if defined(__cplusplus) && !defined(CINTERFACE)
707 MIDL_INTERFACE("92CA9DCD-5622-4bba-A805-5E9F541BD8C9")
708 IObjectArray : public IUnknown
710 public:
711 virtual HRESULT STDMETHODCALLTYPE GetCount(
712 /* [out] */ __RPC__out UINT *pcObjects) = 0;
714 virtual HRESULT STDMETHODCALLTYPE GetAt(
715 /* [in] */ UINT uiIndex,
716 /* [in] */ __RPC__in REFIID riid,
717 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
721 #else /* C style interface */
723 typedef struct IObjectArrayVtbl
725 BEGIN_INTERFACE
727 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
728 __RPC__in IObjectArray * This,
729 /* [in] */ __RPC__in REFIID riid,
730 /* [annotation][iid_is][out] */
731 __RPC__deref_out void **ppvObject);
733 ULONG ( STDMETHODCALLTYPE *AddRef )(
734 __RPC__in IObjectArray * This);
736 ULONG ( STDMETHODCALLTYPE *Release )(
737 __RPC__in IObjectArray * This);
739 HRESULT ( STDMETHODCALLTYPE *GetCount )(
740 __RPC__in IObjectArray * This,
741 /* [out] */ __RPC__out UINT *pcObjects);
743 HRESULT ( STDMETHODCALLTYPE *GetAt )(
744 __RPC__in IObjectArray * This,
745 /* [in] */ UINT uiIndex,
746 /* [in] */ __RPC__in REFIID riid,
747 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
749 END_INTERFACE
750 } IObjectArrayVtbl;
752 interface IObjectArray
754 CONST_VTBL struct IObjectArrayVtbl *lpVtbl;
759 #ifdef COBJMACROS
762 #define IObjectArray_QueryInterface(This,riid,ppvObject) \
763 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
765 #define IObjectArray_AddRef(This) \
766 ( (This)->lpVtbl -> AddRef(This) )
768 #define IObjectArray_Release(This) \
769 ( (This)->lpVtbl -> Release(This) )
772 #define IObjectArray_GetCount(This,pcObjects) \
773 ( (This)->lpVtbl -> GetCount(This,pcObjects) )
775 #define IObjectArray_GetAt(This,uiIndex,riid,ppv) \
776 ( (This)->lpVtbl -> GetAt(This,uiIndex,riid,ppv) )
778 #endif /* COBJMACROS */
781 #endif /* C style interface */
786 #endif /* __IObjectArray_INTERFACE_DEFINED__ */
789 #ifndef __IObjectCollection_INTERFACE_DEFINED__
790 #define __IObjectCollection_INTERFACE_DEFINED__
792 /* interface IObjectCollection */
793 /* [unique][object][uuid] */
796 EXTERN_C const IID IID_IObjectCollection;
798 #if defined(__cplusplus) && !defined(CINTERFACE)
800 MIDL_INTERFACE("5632b1a4-e38a-400a-928a-d4cd63230295")
801 IObjectCollection : public IObjectArray
803 public:
804 virtual HRESULT STDMETHODCALLTYPE AddObject(
805 /* [in] */ __RPC__in_opt IUnknown *punk) = 0;
807 virtual HRESULT STDMETHODCALLTYPE AddFromArray(
808 /* [in] */ __RPC__in_opt IObjectArray *poaSource) = 0;
810 virtual HRESULT STDMETHODCALLTYPE RemoveObjectAt(
811 /* [in] */ UINT uiIndex) = 0;
813 virtual HRESULT STDMETHODCALLTYPE Clear( void) = 0;
817 #else /* C style interface */
819 typedef struct IObjectCollectionVtbl
821 BEGIN_INTERFACE
823 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
824 __RPC__in IObjectCollection * This,
825 /* [in] */ __RPC__in REFIID riid,
826 /* [annotation][iid_is][out] */
827 __RPC__deref_out void **ppvObject);
829 ULONG ( STDMETHODCALLTYPE *AddRef )(
830 __RPC__in IObjectCollection * This);
832 ULONG ( STDMETHODCALLTYPE *Release )(
833 __RPC__in IObjectCollection * This);
835 HRESULT ( STDMETHODCALLTYPE *GetCount )(
836 __RPC__in IObjectCollection * This,
837 /* [out] */ __RPC__out UINT *pcObjects);
839 HRESULT ( STDMETHODCALLTYPE *GetAt )(
840 __RPC__in IObjectCollection * This,
841 /* [in] */ UINT uiIndex,
842 /* [in] */ __RPC__in REFIID riid,
843 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
845 HRESULT ( STDMETHODCALLTYPE *AddObject )(
846 __RPC__in IObjectCollection * This,
847 /* [in] */ __RPC__in_opt IUnknown *punk);
849 HRESULT ( STDMETHODCALLTYPE *AddFromArray )(
850 __RPC__in IObjectCollection * This,
851 /* [in] */ __RPC__in_opt IObjectArray *poaSource);
853 HRESULT ( STDMETHODCALLTYPE *RemoveObjectAt )(
854 __RPC__in IObjectCollection * This,
855 /* [in] */ UINT uiIndex);
857 HRESULT ( STDMETHODCALLTYPE *Clear )(
858 __RPC__in IObjectCollection * This);
860 END_INTERFACE
861 } IObjectCollectionVtbl;
863 interface IObjectCollection
865 CONST_VTBL struct IObjectCollectionVtbl *lpVtbl;
870 #ifdef COBJMACROS
873 #define IObjectCollection_QueryInterface(This,riid,ppvObject) \
874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
876 #define IObjectCollection_AddRef(This) \
877 ( (This)->lpVtbl -> AddRef(This) )
879 #define IObjectCollection_Release(This) \
880 ( (This)->lpVtbl -> Release(This) )
883 #define IObjectCollection_GetCount(This,pcObjects) \
884 ( (This)->lpVtbl -> GetCount(This,pcObjects) )
886 #define IObjectCollection_GetAt(This,uiIndex,riid,ppv) \
887 ( (This)->lpVtbl -> GetAt(This,uiIndex,riid,ppv) )
890 #define IObjectCollection_AddObject(This,punk) \
891 ( (This)->lpVtbl -> AddObject(This,punk) )
893 #define IObjectCollection_AddFromArray(This,poaSource) \
894 ( (This)->lpVtbl -> AddFromArray(This,poaSource) )
896 #define IObjectCollection_RemoveObjectAt(This,uiIndex) \
897 ( (This)->lpVtbl -> RemoveObjectAt(This,uiIndex) )
899 #define IObjectCollection_Clear(This) \
900 ( (This)->lpVtbl -> Clear(This) )
902 #endif /* COBJMACROS */
905 #endif /* C style interface */
910 #endif /* __IObjectCollection_INTERFACE_DEFINED__ */
913 /* Additional Prototypes for ALL interfaces */
915 /* end of Additional Prototypes */
917 #ifdef __cplusplus
919 #endif
921 #endif
928 extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_0188_v0_0_c_ifspec;
929 extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_0188_v0_0_s_ifspec;
931 #ifndef __ICustomDestinationList_INTERFACE_DEFINED__
932 #define __ICustomDestinationList_INTERFACE_DEFINED__
934 /* interface ICustomDestinationList */
935 /* [unique][object][uuid] */
937 typedef /* [v1_enum] */
938 enum KNOWNDESTCATEGORY
939 { KDC_FREQUENT = 1,
940 KDC_RECENT = ( KDC_FREQUENT + 1 )
941 } KNOWNDESTCATEGORY;
944 EXTERN_C const IID IID_ICustomDestinationList;
946 #if defined(__cplusplus) && !defined(CINTERFACE)
948 MIDL_INTERFACE("6332debf-87b5-4670-90c0-5e57b408a49e")
949 ICustomDestinationList : public IUnknown
951 public:
952 virtual HRESULT STDMETHODCALLTYPE SetAppID(
953 /* [string][in] */ __RPC__in_string LPCWSTR pszAppID) = 0;
955 virtual HRESULT STDMETHODCALLTYPE BeginList(
956 /* [out] */ __RPC__out UINT *pcMinSlots,
957 /* [in] */ __RPC__in REFIID riid,
958 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
960 virtual HRESULT STDMETHODCALLTYPE AppendCategory(
961 /* [string][in] */ __RPC__in_string LPCWSTR pszCategory,
962 /* [in] */ __RPC__in_opt IObjectArray *poa) = 0;
964 virtual HRESULT STDMETHODCALLTYPE AppendKnownCategory(
965 /* [in] */ KNOWNDESTCATEGORY category) = 0;
967 virtual HRESULT STDMETHODCALLTYPE AddUserTasks(
968 /* [in] */ __RPC__in_opt IObjectArray *poa) = 0;
970 virtual HRESULT STDMETHODCALLTYPE CommitList( void) = 0;
972 virtual HRESULT STDMETHODCALLTYPE GetRemovedDestinations(
973 /* [in] */ __RPC__in REFIID riid,
974 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
976 virtual HRESULT STDMETHODCALLTYPE DeleteList(
977 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszAppID) = 0;
979 virtual HRESULT STDMETHODCALLTYPE AbortList( void) = 0;
983 #else /* C style interface */
985 typedef struct ICustomDestinationListVtbl
987 BEGIN_INTERFACE
989 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
990 __RPC__in ICustomDestinationList * This,
991 /* [in] */ __RPC__in REFIID riid,
992 /* [annotation][iid_is][out] */
993 __RPC__deref_out void **ppvObject);
995 ULONG ( STDMETHODCALLTYPE *AddRef )(
996 __RPC__in ICustomDestinationList * This);
998 ULONG ( STDMETHODCALLTYPE *Release )(
999 __RPC__in ICustomDestinationList * This);
1001 HRESULT ( STDMETHODCALLTYPE *SetAppID )(
1002 __RPC__in ICustomDestinationList * This,
1003 /* [string][in] */ __RPC__in_string LPCWSTR pszAppID);
1005 HRESULT ( STDMETHODCALLTYPE *BeginList )(
1006 __RPC__in ICustomDestinationList * This,
1007 /* [out] */ __RPC__out UINT *pcMinSlots,
1008 /* [in] */ __RPC__in REFIID riid,
1009 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
1011 HRESULT ( STDMETHODCALLTYPE *AppendCategory )(
1012 __RPC__in ICustomDestinationList * This,
1013 /* [string][in] */ __RPC__in_string LPCWSTR pszCategory,
1014 /* [in] */ __RPC__in_opt IObjectArray *poa);
1016 HRESULT ( STDMETHODCALLTYPE *AppendKnownCategory )(
1017 __RPC__in ICustomDestinationList * This,
1018 /* [in] */ KNOWNDESTCATEGORY category);
1020 HRESULT ( STDMETHODCALLTYPE *AddUserTasks )(
1021 __RPC__in ICustomDestinationList * This,
1022 /* [in] */ __RPC__in_opt IObjectArray *poa);
1024 HRESULT ( STDMETHODCALLTYPE *CommitList )(
1025 __RPC__in ICustomDestinationList * This);
1027 HRESULT ( STDMETHODCALLTYPE *GetRemovedDestinations )(
1028 __RPC__in ICustomDestinationList * This,
1029 /* [in] */ __RPC__in REFIID riid,
1030 /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
1032 HRESULT ( STDMETHODCALLTYPE *DeleteList )(
1033 __RPC__in ICustomDestinationList * This,
1034 /* [string][unique][in] */ __RPC__in_opt_string LPCWSTR pszAppID);
1036 HRESULT ( STDMETHODCALLTYPE *AbortList )(
1037 __RPC__in ICustomDestinationList * This);
1039 END_INTERFACE
1040 } ICustomDestinationListVtbl;
1042 interface ICustomDestinationList
1044 CONST_VTBL struct ICustomDestinationListVtbl *lpVtbl;
1049 #ifdef COBJMACROS
1052 #define ICustomDestinationList_QueryInterface(This,riid,ppvObject) \
1053 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1055 #define ICustomDestinationList_AddRef(This) \
1056 ( (This)->lpVtbl -> AddRef(This) )
1058 #define ICustomDestinationList_Release(This) \
1059 ( (This)->lpVtbl -> Release(This) )
1062 #define ICustomDestinationList_SetAppID(This,pszAppID) \
1063 ( (This)->lpVtbl -> SetAppID(This,pszAppID) )
1065 #define ICustomDestinationList_BeginList(This,pcMinSlots,riid,ppv) \
1066 ( (This)->lpVtbl -> BeginList(This,pcMinSlots,riid,ppv) )
1068 #define ICustomDestinationList_AppendCategory(This,pszCategory,poa) \
1069 ( (This)->lpVtbl -> AppendCategory(This,pszCategory,poa) )
1071 #define ICustomDestinationList_AppendKnownCategory(This,category) \
1072 ( (This)->lpVtbl -> AppendKnownCategory(This,category) )
1074 #define ICustomDestinationList_AddUserTasks(This,poa) \
1075 ( (This)->lpVtbl -> AddUserTasks(This,poa) )
1077 #define ICustomDestinationList_CommitList(This) \
1078 ( (This)->lpVtbl -> CommitList(This) )
1080 #define ICustomDestinationList_GetRemovedDestinations(This,riid,ppv) \
1081 ( (This)->lpVtbl -> GetRemovedDestinations(This,riid,ppv) )
1083 #define ICustomDestinationList_DeleteList(This,pszAppID) \
1084 ( (This)->lpVtbl -> DeleteList(This,pszAppID) )
1086 #define ICustomDestinationList_AbortList(This) \
1087 ( (This)->lpVtbl -> AbortList(This) )
1089 #endif /* COBJMACROS */
1092 #endif /* C style interface */
1097 #endif /* __ICustomDestinationList_INTERFACE_DEFINED__ */
1100 #ifndef __IApplicationDestinations_INTERFACE_DEFINED__
1101 #define __IApplicationDestinations_INTERFACE_DEFINED__
1103 /* interface IApplicationDestinations */
1104 /* [unique][object][uuid] */
1107 EXTERN_C const IID IID_IApplicationDestinations;
1109 #if defined(__cplusplus) && !defined(CINTERFACE)
1111 MIDL_INTERFACE("12337d35-94c6-48a0-bce7-6a9c69d4d600")
1112 IApplicationDestinations : public IUnknown
1114 public:
1115 virtual HRESULT STDMETHODCALLTYPE SetAppID(
1116 /* [in] */ __RPC__in LPCWSTR pszAppID) = 0;
1118 virtual HRESULT STDMETHODCALLTYPE RemoveDestination(
1119 /* [in] */ __RPC__in_opt IUnknown *punk) = 0;
1121 virtual HRESULT STDMETHODCALLTYPE RemoveAllDestinations( void) = 0;
1125 #else /* C style interface */
1127 typedef struct IApplicationDestinationsVtbl
1129 BEGIN_INTERFACE
1131 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1132 __RPC__in IApplicationDestinations * This,
1133 /* [in] */ __RPC__in REFIID riid,
1134 /* [annotation][iid_is][out] */
1135 __RPC__deref_out void **ppvObject);
1137 ULONG ( STDMETHODCALLTYPE *AddRef )(
1138 __RPC__in IApplicationDestinations * This);
1140 ULONG ( STDMETHODCALLTYPE *Release )(
1141 __RPC__in IApplicationDestinations * This);
1143 HRESULT ( STDMETHODCALLTYPE *SetAppID )(
1144 __RPC__in IApplicationDestinations * This,
1145 /* [in] */ __RPC__in LPCWSTR pszAppID);
1147 HRESULT ( STDMETHODCALLTYPE *RemoveDestination )(
1148 __RPC__in IApplicationDestinations * This,
1149 /* [in] */ __RPC__in_opt IUnknown *punk);
1151 HRESULT ( STDMETHODCALLTYPE *RemoveAllDestinations )(
1152 __RPC__in IApplicationDestinations * This);
1154 END_INTERFACE
1155 } IApplicationDestinationsVtbl;
1157 interface IApplicationDestinations
1159 CONST_VTBL struct IApplicationDestinationsVtbl *lpVtbl;
1164 #ifdef COBJMACROS
1167 #define IApplicationDestinations_QueryInterface(This,riid,ppvObject) \
1168 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1170 #define IApplicationDestinations_AddRef(This) \
1171 ( (This)->lpVtbl -> AddRef(This) )
1173 #define IApplicationDestinations_Release(This) \
1174 ( (This)->lpVtbl -> Release(This) )
1177 #define IApplicationDestinations_SetAppID(This,pszAppID) \
1178 ( (This)->lpVtbl -> SetAppID(This,pszAppID) )
1180 #define IApplicationDestinations_RemoveDestination(This,punk) \
1181 ( (This)->lpVtbl -> RemoveDestination(This,punk) )
1183 #define IApplicationDestinations_RemoveAllDestinations(This) \
1184 ( (This)->lpVtbl -> RemoveAllDestinations(This) )
1186 #endif /* COBJMACROS */
1189 #endif /* C style interface */
1191 #endif /* __IApplicationDestinations_INTERFACE_DEFINED__ */
1193 EXTERN_C const CLSID CLSID_DestinationList;
1195 #ifdef __cplusplus
1197 class DECLSPEC_UUID("77f10cf0-3db5-4966-b520-b7c54fd35ed6")
1198 DestinationList;
1199 #endif
1201 EXTERN_C const CLSID CLSID_ApplicationDestinations;
1203 #ifdef __cplusplus
1205 class DECLSPEC_UUID("86c14003-4d6b-4ef3-a7b4-0506663b2e68")
1206 ApplicationDestinations;
1207 #endif
1209 EXTERN_C const CLSID CLSID_EnumerableObjectCollection;
1211 #ifdef __cplusplus
1213 class DECLSPEC_UUID("2d3468c1-36a7-43b6-ac24-d3f02fd9607a")
1214 EnumerableObjectCollection;
1215 #endif
1217 DEFINE_PROPERTYKEY(PKEY_Title, 0xF29F85E0, 0x4FF9, 0x1068, 0xAB, 0x91, 0x08, 0x00, 0x2B, 0x27, 0xB3, 0xD9, 2);
1218 DEFINE_PROPERTYKEY(PKEY_AppUserModel_IsDestListSeparator, 0x9F4C2855, 0x9F79, 0x4B39, 0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3, 6);
1221 typedef /* [v1_enum] */
1222 enum LIBRARYMANAGEDIALOGOPTIONS
1223 { LMD_DEFAULT = 0,
1224 LMD_ALLOWUNINDEXABLENETWORKLOCATIONS = 0x1
1225 } LIBRARYMANAGEDIALOGOPTIONS;
1227 DEFINE_ENUM_FLAG_OPERATORS(LIBRARYMANAGEDIALOGOPTIONS)
1228 SHSTDAPI SHShowManageLibraryUI(__in IShellItem *psiLibrary, __in HWND hwndOwner, __in_opt LPCWSTR pszTitle, __in_opt LPCWSTR pszInstruction, __in LIBRARYMANAGEDIALOGOPTIONS lmdOptions);
1229 SHSTDAPI SHResolveLibrary(__in IShellItem *psiLibrary);
1231 __inline HRESULT SHCreateLibrary(__in REFIID riid, __deref_out void **ppv)
1233 return CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
1236 __inline HRESULT SHLoadLibraryFromItem(__in IShellItem *psiLibrary, __in DWORD grfMode, __in REFIID riid, __deref_out void **ppv)
1238 *ppv = NULL;
1239 IShellLibrary *plib;
1240 HRESULT hr = CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&plib));
1241 if (SUCCEEDED(hr))
1243 hr = plib->LoadLibraryFromItem(psiLibrary, grfMode);
1244 if (SUCCEEDED(hr))
1246 hr = plib->QueryInterface(riid, ppv);
1248 plib->Release();
1250 return hr;
1253 __inline HRESULT SHLoadLibraryFromKnownFolder(__in REFKNOWNFOLDERID kfidLibrary, __in DWORD grfMode, __in REFIID riid, __deref_out void **ppv)
1255 *ppv = NULL;
1256 IShellLibrary *plib;
1257 HRESULT hr = CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&plib));
1258 if (SUCCEEDED(hr))
1260 hr = plib->LoadLibraryFromKnownFolder(kfidLibrary, grfMode);
1261 if (SUCCEEDED(hr))
1263 hr = plib->QueryInterface(riid, ppv);
1265 plib->Release();
1267 return hr;
1270 __inline HRESULT SHLoadLibraryFromParsingName(__in PCWSTR pszParsingName, __in DWORD grfMode, __in REFIID riid, __deref_out void **ppv)
1272 *ppv = NULL;
1273 IShellItem *psiLibrary;
1274 HRESULT hr = SHCreateItemFromParsingName(pszParsingName, NULL, IID_PPV_ARGS(&psiLibrary));
1275 if (SUCCEEDED(hr))
1277 hr = SHLoadLibraryFromItem(psiLibrary, grfMode, riid, ppv);
1278 psiLibrary->Release();
1280 return hr;
1283 __inline HRESULT SHAddFolderPathToLibrary(__in IShellLibrary *plib, __in PCWSTR pszFolderPath)
1285 IShellItem *psiFolder;
1286 HRESULT hr = SHCreateItemFromParsingName(pszFolderPath, NULL, IID_PPV_ARGS(&psiFolder));
1287 if (SUCCEEDED(hr))
1289 hr = plib->AddFolder(psiFolder);
1290 psiFolder->Release();
1292 return hr;
1295 __inline HRESULT SHRemoveFolderPathFromLibrary(__in IShellLibrary *plib, __in PCWSTR pszFolderPath)
1297 PIDLIST_ABSOLUTE pidlFolder = SHSimpleIDListFromPath(pszFolderPath);
1298 HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;
1299 if (SUCCEEDED(hr))
1301 IShellItem *psiFolder;
1302 hr = SHCreateItemFromIDList(pidlFolder, IID_PPV_ARGS(&psiFolder));
1303 if (SUCCEEDED(hr))
1305 hr = plib->RemoveFolder(psiFolder);
1306 psiFolder->Release();
1308 CoTaskMemFree(pidlFolder);
1310 return hr;
1313 __inline HRESULT SHResolveFolderPathInLibrary(__in IShellLibrary *plib, __in PCWSTR pszFolderPath, __in DWORD dwTimeout, __deref_out PWSTR *ppszResolvedPath)
1315 *ppszResolvedPath = NULL;
1316 PIDLIST_ABSOLUTE pidlFolder = SHSimpleIDListFromPath(pszFolderPath);
1317 HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;
1318 if (SUCCEEDED(hr))
1320 IShellItem *psiFolder;
1321 hr = SHCreateItemFromIDList(pidlFolder, IID_PPV_ARGS(&psiFolder));
1322 if (SUCCEEDED(hr))
1324 IShellItem *psiResolved;
1325 hr = plib->ResolveFolder(psiFolder, dwTimeout, IID_PPV_ARGS(&psiResolved));
1326 if (SUCCEEDED(hr))
1328 hr = psiResolved->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, ppszResolvedPath);
1329 psiResolved->Release();
1331 psiFolder->Release();
1333 CoTaskMemFree(pidlFolder);
1335 return hr;
1338 __inline HRESULT SHSaveLibraryInFolderPath(__in IShellLibrary *plib, __in PCWSTR pszFolderPath, __in PCWSTR pszLibraryName, __in LIBRARYSAVEFLAGS lsf, __deref_opt_out PWSTR *ppszSavedToPath)
1340 if (ppszSavedToPath)
1342 *ppszSavedToPath = NULL;
1345 IShellItem *psiFolder;
1346 HRESULT hr = SHCreateItemFromParsingName(pszFolderPath, NULL, IID_PPV_ARGS(&psiFolder));
1347 if (SUCCEEDED(hr))
1349 IShellItem *psiSavedTo;
1350 hr = plib->Save(psiFolder, pszLibraryName, lsf, &psiSavedTo);
1351 if (SUCCEEDED(hr))
1353 if (ppszSavedToPath)
1355 hr = psiSavedTo->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, ppszSavedToPath);
1357 psiSavedTo->Release();
1359 psiFolder->Release();
1361 return hr;
1363 #endif /* (NTDDI_VERSION < NTDDI_WIN7) */