2 * COM interfaces for shell objects
4 * Copyright (C) 2004 Maxime Bellengé
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 /*****************************************************************************
26 * IEnumACString interface
31 uuid(8e74c210
-cf9d
-4eaf
-a403
-7356428f0a5a
),
32 pointer_default(unique)
34 interface IEnumACString
: IEnumString
36 typedef IEnumACString
*PENUMACSTRING
, *LPENUMACSTRING
;
38 typedef enum _tagACENUMOPTION
40 ACEO_NONE
= 0x00000000,
41 ACEO_MOSTRECENTFIRST
= 0x00000001,
42 ACEO_FIRSTUNUSED
= 0x00010000,
45 HRESULT NextItem
( [out] LPWSTR pszUrl
,
47 [out] ULONG
*pulSortIndex
);
49 HRESULT SetEnumOptions
( [in] DWORD dwOptions
);
51 HRESULT GetEnumOptions
( [out] DWORD
*pdwOptions
);
54 /*****************************************************************************
55 * IAutoComplete interface
60 uuid(00bb2762
-6a77
-11d0
-a535
-00c04fd7d062
),
61 pointer_default(unique)
63 interface IAutoComplete
: IUnknown
65 typedef IAutoComplete
*LPAUTOCOMPLETE
;
67 HRESULT Init
( [in] HWND hwndEdit
,
68 [in] IUnknown
*punkACL
,
69 [in] LPCOLESTR pwszRegKeyPath
,
70 [in] LPCOLESTR pwszQuickComplete
);
72 HRESULT Enable
( [in] BOOL fEnable
);
75 /*****************************************************************************
76 * IAutoComplete2 interface
81 uuid(eac04bc0
-3791-11d2
-bb95
-0060977b464c
),
82 pointer_default(unique)
84 interface IAutoComplete2
: IAutoComplete
86 typedef IAutoComplete2
*LPAUTOCOMPLETE2
;
88 typedef enum _tagAUTOCOMPLETEOPTIONS
90 ACO_NONE
= 0x00, /* No AutoComplete */
91 ACO_AUTOSUGGEST
= 0x01, /* enable autosuggest dropdown */
92 ACO_AUTOAPPEND
= 0x02, /* enable autoappend */
93 ACO_SEARCH
= 0x04, /* add search entry to completion list */
94 ACO_FILTERPREFIXES
= 0x08, /* don't match common prefixes (www., http://, etc) */
95 ACO_USETAB
= 0x10, /* use tab to select autosuggest entries */
96 ACO_UPDOWNKEYDROPSLIST
= 0x20, /* up/down arrow key invokes autosuggest dropdown (if enabled) */
97 ACO_RTLREADING
= 0x40, /* enable RTL reading order for dropdown */
98 } AUTOCOMPLETEOPTIONS
;
100 HRESULT SetOptions
( [in] DWORD dwFlag
);
102 HRESULT GetOptions
( [out] DWORD
*pdwFlag
);
106 uuid(50a7e9b0
-70ef
-11d1
-b75a
-00a0c90564fe
),
112 importlib
("stdole2.tlb");
117 uuid(9ba05970
-f6a8
-11cf
-a442
-00a0c90a8f39
),
118 pointer_default(unique)
120 interface IFolderViewOC
: IDispatch
122 HRESULT SetFolderView
( [in] IDispatch
*pdisp
);
126 uuid(62112aa2
-ebe4
-11cf
-a5fb
-0020afe7292d
)
128 dispinterface DShellFolderViewEvents
132 [id(DISPID_SELECTIONCHANGED
)]
133 void SelectionChanged
();
135 [id(DISPID_FILELISTENUMDONE
)]
138 [id(DISPID_VERBINVOKED
)]
139 VARIANT_BOOL VerbInvoked
();
141 [id(DISPID_DEFAULTVERBINVOKED
)]
142 VARIANT_BOOL DefaultVerbInvoked
();
144 [id(DISPID_BEGINDRAG
)]
145 VARIANT_BOOL BeginDrag
();
149 uuid(9ba05971
-f6a8
-11cf
-a442
-00a0c90a8f39
),
152 coclass ShellFolderViewOC
154 [default] interface IFolderViewOC
;
155 [default, source] dispinterface DShellFolderViewEvents
;
158 interface FolderItem
;
159 interface FolderItems
;
160 interface FolderItemVerb
;
161 interface FolderItemVerbs
;
163 /*****************************************************************************
168 uuid(bbcbde60
-c3ff
-11ce
-8350-444553540000),
172 interface Folder
: IDispatch
174 [propget, id(DISPID_VALUE
)]
175 HRESULT Title
( [out, retval] BSTR *pbs
);
178 HRESULT Application
( [out, retval] IDispatch
**ppid
);
181 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
184 HRESULT ParentFolder
( [out, retval] Folder
**ppsf
);
186 HRESULT Items
( [out, retval] FolderItems
**ppid
);
188 HRESULT ParseName
( [in] BSTR bName
, [out, retval] FolderItem
**ppid
);
190 HRESULT NewFolder
( [in] BSTR bName
, [in, optional] VARIANT vOptions
);
192 HRESULT MoveHere
( [in] VARIANT vItem
, [in, optional] VARIANT vOptions
);
194 HRESULT CopyHere
( [in] VARIANT vItem
, [in, optional] VARIANT vOptions
);
196 HRESULT GetDetailsOf
( [in] VARIANT vItem
,
198 [out, retval] BSTR *pbs
);
201 /*****************************************************************************
206 uuid(f0d2d8ef
-3890-11d2
-bf8b
-00c04fb93661
),
210 interface Folder2
: Folder
213 HRESULT Self
( [out, retval] FolderItem
**ppfi
);
216 HRESULT OfflineStatus
( [out, retval] LONG *pul
);
218 HRESULT Synchronize
();
221 HRESULT HaveToShowWebViewBarricade
(
222 [out, retval] VARIANT_BOOL *pbHaveToShowWebViewBarricade
);
224 HRESULT DismissedWebViewBarricade
();
227 /*****************************************************************************
232 uuid(a7ae5f64
-c4d7
-4d7f
-9307-4d24ee54b841
),
236 interface Folder3
: Folder2
239 HRESULT ShowWebViewBarricade
(
240 [out, retval] VARIANT_BOOL *pbShowWebViewBarricade
);
243 HRESULT ShowWebViewBarricade
( [in] VARIANT_BOOL bShowWebViewBarricade
);
246 /*****************************************************************************
247 * FolderItem interface
251 uuid(fac32c80
-cbe4
-11ce
-8350-444553540000),
255 interface FolderItem
: IDispatch
257 typedef FolderItem
*LPFOLDERITEM
;
260 HRESULT Application
( [out, retval] IDispatch
**ppid
);
263 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
265 [propget, id(DISPID_VALUE
)]
266 HRESULT Name
( [out, retval] BSTR *pbs
);
268 [propput, id(DISPID_VALUE
)]
269 HRESULT Name
( [in] BSTR bs
);
272 HRESULT Path
( [out, retval] BSTR *pbs
);
275 HRESULT GetLink
( [out, retval] IDispatch
**ppid
);
278 HRESULT GetFolder
( [out, retval] IDispatch
**ppid
);
281 HRESULT IsLink
( [out, retval] VARIANT_BOOL *pb
);
284 HRESULT IsFolder
( [out, retval] VARIANT_BOOL *pb
);
287 HRESULT IsFileSystem
( [out, retval] VARIANT_BOOL *pb
);
290 HRESULT IsBrowsable
( [out, retval] VARIANT_BOOL *pb
);
293 HRESULT ModifyDate
( [out, retval] DATE
*pdt
);
296 HRESULT ModifyDate
( [in] DATE dt
);
299 HRESULT Size
( [out, retval] LONG *pul
);
302 HRESULT Type
( [out, retval] BSTR *pbs
);
304 HRESULT Verbs
( [out, retval] FolderItemVerbs
**ppfic
);
306 HRESULT InvokeVerb
( [in, optional] VARIANT vVerb
);
309 /*****************************************************************************
310 * FolderItems interface
314 uuid(744129e0
-cbe5
-11ce
-8350-444553540000),
318 interface FolderItems
: IDispatch
321 HRESULT Count
( [out, retval] long *plCount
);
324 HRESULT Application
( [out, retval] IDispatch
**ppid
);
327 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
329 HRESULT Item
( [in, optional] VARIANT index
,
330 [out, retval] FolderItem
**ppid
);
333 HRESULT _NewEnum
( [out, retval] IUnknown
**ppunk
);
336 /*****************************************************************************
337 * FolderItemVerb interface
341 uuid(08ec3e00
-50b0
-11cf
-960c
-0080c7f4ee85
),
345 interface FolderItemVerb
: IDispatch
348 HRESULT Application
( [out, retval] IDispatch
**ppid
);
351 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
353 [propget, id(DISPID_VALUE
)]
354 HRESULT Name
( [out, retval] BSTR *pbs
);
359 /*****************************************************************************
360 * FolderItemVerbs interface
364 uuid(1f8352c0
-50b0
-11cf
-960c
-0080c7f4ee85
),
368 interface FolderItemVerbs
: IDispatch
371 HRESULT Count
( [out, retval] long *plCount
);
374 HRESULT Application
( [out, retval] IDispatch
**ppid
);
377 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
379 HRESULT Item
( [in, optional] VARIANT index
,
380 [out, retval] FolderItemVerb
**ppid
);
383 HRESULT _NewEnum
( [out, retval] IUnknown
**ppunk
);
386 /*****************************************************************************
387 * IShellDispatch interface
391 uuid(d8f015c0
-c278
-11ce
-a49e
-444553540000
),
396 interface IShellDispatch
: IDispatch
399 HRESULT Application
( [out, retval] IDispatch
**ppid
);
402 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
404 HRESULT NameSpace
( [in] VARIANT vDir
, [out, retval] Folder
**ppsdf
);
406 HRESULT BrowseForFolder
( [in] long Hwnd
,
409 [in, optional] VARIANT RootFolder
,
410 [out, retval] Folder
**ppsdf
);
412 HRESULT Windows
( [out, retval] IDispatch
**ppid
);
414 HRESULT Open
( [in] VARIANT vDir
);
416 HRESULT Explore
( [in] VARIANT vDir
);
418 HRESULT MinimizeAll
();
420 HRESULT UndoMinimizeALL
();
424 HRESULT CascadeWindows
();
426 HRESULT TileVertically
();
428 HRESULT TileHorizontally
();
430 HRESULT ShutdownWindows
();
438 HRESULT TrayProperties
();
444 HRESULT FindComputer
();
446 HRESULT RefreshMenu
();
448 HRESULT ControlPanelItem
( [in] BSTR szDir
);
452 uuid(13709620-c279
-11ce
-a49e
-444553540000
)
456 [default] interface IShellDispatch
;
460 uuid(0a89a860
-d7b1
-11ce
-8350-444553540000),
463 coclass ShellDispatchInproc
470 uuid(ca31ea20
-48d0
-11cf
-8350-444553540000)
472 enum ShellSpecialFolderConstants
{
484 ssfDESKTOPDIRECTORY
= 0x10,
490 ssfCOMMONSTARTMENU
= 0x16,
491 ssfCOMMONPROGRAMS
= 0x17,
492 ssfCOMMONSTARTUP
= 0x18,
493 ssfCOMMONDESKTOPDIR
= 0x19,
496 ssfLOCALAPPDATA
= 0x1c,
497 ssfALTSTARTUP
= 0x1d,
498 ssfCOMMONALTSTARTUP
= 0x1e,
499 ssfCOMMONFAVORITES
= 0x1f,
500 ssfINTERNETCACHE
= 0x20,
503 ssfCOMMONAPPDATA
= 0x23,
506 ssfPROGRAMFILES
= 0x26,
507 ssfMYPICTURES
= 0x27,
510 ssfPROGRAMFILESx86
= 0x30
511 } ShellSpecialFolderConstants
;
513 } /* library Shell32 */
515 /*****************************************************************************
516 * IAsyncOperation interface
519 uuid(3d8b0590
-f691
-11d2
-8ea9
-006097df5bd4
),
523 interface IAsyncOperation
: IUnknown
525 typedef [unique] IAsyncOperation
*LPASYNCOPERATION
;
527 HRESULT SetAsyncMode
([in] BOOL fDoOpAsync
);
529 HRESULT GetAsyncMode
([out] BOOL
*pfIsOpAsync
);
531 HRESULT StartOperation
([in, unique, optional] IBindCtx
*pbcReserved
);
533 HRESULT InOperation
([out] BOOL
*pfInAsyncOp
);
535 HRESULT EndOperation
(
536 [in] HRESULT hResult,
537 [in, unique] IBindCtx
*pbcReserved
,
538 [in] DWORD dwEffects
);