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 cpp_quote
("#ifdef WINE_NO_UNICODE_MACROS")
26 cpp_quote
("#undef ShellExecute")
29 /*****************************************************************************
30 * IEnumACString interface
35 uuid(8e74c210
-cf9d
-4eaf
-a403
-7356428f0a5a
),
36 pointer_default(unique)
38 interface IEnumACString
: IEnumString
40 typedef IEnumACString
*PENUMACSTRING
, *LPENUMACSTRING
;
42 typedef enum _tagACENUMOPTION
44 ACEO_NONE
= 0x00000000,
45 ACEO_MOSTRECENTFIRST
= 0x00000001,
46 ACEO_FIRSTUNUSED
= 0x00010000,
49 HRESULT NextItem
( [out] LPWSTR pszUrl
,
51 [out] ULONG
*pulSortIndex
);
53 HRESULT SetEnumOptions
( [in] DWORD dwOptions
);
55 HRESULT GetEnumOptions
( [out] DWORD
*pdwOptions
);
58 /*****************************************************************************
59 * IAutoComplete interface
64 uuid(00bb2762
-6a77
-11d0
-a535
-00c04fd7d062
),
65 pointer_default(unique)
67 interface IAutoComplete
: IUnknown
69 typedef IAutoComplete
*LPAUTOCOMPLETE
;
71 HRESULT Init
( [in] HWND hwndEdit
,
72 [in] IUnknown
*punkACL
,
73 [in] LPCOLESTR pwszRegKeyPath
,
74 [in] LPCOLESTR pwszQuickComplete
);
76 HRESULT Enable
( [in] BOOL fEnable
);
79 /*****************************************************************************
80 * IAutoComplete2 interface
85 uuid(eac04bc0
-3791-11d2
-bb95
-0060977b464c
),
86 pointer_default(unique)
88 interface IAutoComplete2
: IAutoComplete
90 typedef IAutoComplete2
*LPAUTOCOMPLETE2
;
92 typedef enum _tagAUTOCOMPLETEOPTIONS
94 ACO_NONE
= 0x00, /* No AutoComplete */
95 ACO_AUTOSUGGEST
= 0x01, /* enable autosuggest dropdown */
96 ACO_AUTOAPPEND
= 0x02, /* enable autoappend */
97 ACO_SEARCH
= 0x04, /* add search entry to completion list */
98 ACO_FILTERPREFIXES
= 0x08, /* don't match common prefixes (www., http://, etc) */
99 ACO_USETAB
= 0x10, /* use tab to select autosuggest entries */
100 ACO_UPDOWNKEYDROPSLIST
= 0x20, /* up/down arrow key invokes autosuggest dropdown (if enabled) */
101 ACO_RTLREADING
= 0x40, /* enable RTL reading order for dropdown */
102 } AUTOCOMPLETEOPTIONS
;
104 HRESULT SetOptions
( [in] DWORD dwFlag
);
106 HRESULT GetOptions
( [out] DWORD
*pdwFlag
);
110 uuid(50a7e9b0
-70ef
-11d1
-b75a
-00a0c90564fe
),
116 importlib
("stdole2.tlb");
121 uuid(9ba05970
-f6a8
-11cf
-a442
-00a0c90a8f39
),
122 pointer_default(unique)
124 interface IFolderViewOC
: IDispatch
126 HRESULT SetFolderView
( [in] IDispatch
*pdisp
);
130 uuid(62112aa2
-ebe4
-11cf
-a5fb
-0020afe7292d
)
132 dispinterface DShellFolderViewEvents
136 [id(DISPID_SELECTIONCHANGED
)]
137 void SelectionChanged
();
139 [id(DISPID_FILELISTENUMDONE
)]
142 [id(DISPID_VERBINVOKED
)]
143 VARIANT_BOOL VerbInvoked
();
145 [id(DISPID_DEFAULTVERBINVOKED
)]
146 VARIANT_BOOL DefaultVerbInvoked
();
148 [id(DISPID_BEGINDRAG
)]
149 VARIANT_BOOL BeginDrag
();
153 uuid(9ba05971
-f6a8
-11cf
-a442
-00a0c90a8f39
),
156 coclass ShellFolderViewOC
158 [default] interface IFolderViewOC
;
159 [default, source] dispinterface DShellFolderViewEvents
;
162 interface FolderItem
;
163 interface FolderItems
;
164 interface FolderItemVerb
;
165 interface FolderItemVerbs
;
167 /*****************************************************************************
172 uuid(bbcbde60
-c3ff
-11ce
-8350-444553540000),
176 interface Folder
: IDispatch
178 [propget, id(DISPID_VALUE
)]
179 HRESULT Title
( [out, retval] BSTR *pbs
);
182 HRESULT Application
( [out, retval] IDispatch
**ppid
);
185 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
188 HRESULT ParentFolder
( [out, retval] Folder
**ppsf
);
190 HRESULT Items
( [out, retval] FolderItems
**ppid
);
192 HRESULT ParseName
( [in] BSTR bName
, [out, retval] FolderItem
**ppid
);
194 HRESULT NewFolder
( [in] BSTR bName
, [in, optional] VARIANT vOptions
);
196 HRESULT MoveHere
( [in] VARIANT vItem
, [in, optional] VARIANT vOptions
);
198 HRESULT CopyHere
( [in] VARIANT vItem
, [in, optional] VARIANT vOptions
);
200 HRESULT GetDetailsOf
( [in] VARIANT vItem
,
202 [out, retval] BSTR *pbs
);
205 /*****************************************************************************
210 uuid(f0d2d8ef
-3890-11d2
-bf8b
-00c04fb93661
),
214 interface Folder2
: Folder
217 HRESULT Self
( [out, retval] FolderItem
**ppfi
);
220 HRESULT OfflineStatus
( [out, retval] LONG *pul
);
222 HRESULT Synchronize
();
225 HRESULT HaveToShowWebViewBarricade
(
226 [out, retval] VARIANT_BOOL *pbHaveToShowWebViewBarricade
);
228 HRESULT DismissedWebViewBarricade
();
231 /*****************************************************************************
236 uuid(a7ae5f64
-c4d7
-4d7f
-9307-4d24ee54b841
),
240 interface Folder3
: Folder2
243 HRESULT ShowWebViewBarricade
(
244 [out, retval] VARIANT_BOOL *pbShowWebViewBarricade
);
247 HRESULT ShowWebViewBarricade
( [in] VARIANT_BOOL bShowWebViewBarricade
);
250 /*****************************************************************************
251 * FolderItem interface
255 uuid(fac32c80
-cbe4
-11ce
-8350-444553540000),
259 interface FolderItem
: IDispatch
261 typedef FolderItem
*LPFOLDERITEM
;
264 HRESULT Application
( [out, retval] IDispatch
**ppid
);
267 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
269 [propget, id(DISPID_VALUE
)]
270 HRESULT Name
( [out, retval] BSTR *pbs
);
272 [propput, id(DISPID_VALUE
)]
273 HRESULT Name
( [in] BSTR bs
);
276 HRESULT Path
( [out, retval] BSTR *pbs
);
279 HRESULT GetLink
( [out, retval] IDispatch
**ppid
);
282 HRESULT GetFolder
( [out, retval] IDispatch
**ppid
);
285 HRESULT IsLink
( [out, retval] VARIANT_BOOL *pb
);
288 HRESULT IsFolder
( [out, retval] VARIANT_BOOL *pb
);
291 HRESULT IsFileSystem
( [out, retval] VARIANT_BOOL *pb
);
294 HRESULT IsBrowsable
( [out, retval] VARIANT_BOOL *pb
);
297 HRESULT ModifyDate
( [out, retval] DATE
*pdt
);
300 HRESULT ModifyDate
( [in] DATE dt
);
303 HRESULT Size
( [out, retval] LONG *pul
);
306 HRESULT Type
( [out, retval] BSTR *pbs
);
308 HRESULT Verbs
( [out, retval] FolderItemVerbs
**ppfic
);
310 HRESULT InvokeVerb
( [in, optional] VARIANT vVerb
);
315 uuid(edc817aa
-92b8
-11d1
-b075
-00c04fc33aa5
),
319 interface FolderItem2
: FolderItem
321 HRESULT InvokeVerbEx
([in, optional] VARIANT verb
, [in, optional] VARIANT args
);
322 HRESULT ExtendedProperty
([in] BSTR propname
, [out, retval] VARIANT *ret
);
325 /*****************************************************************************
326 * FolderItems interface
330 uuid(744129e0
-cbe5
-11ce
-8350-444553540000),
334 interface FolderItems
: IDispatch
337 HRESULT Count
( [out, retval] long *plCount
);
340 HRESULT Application
( [out, retval] IDispatch
**ppid
);
343 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
345 HRESULT Item
( [in, optional] VARIANT index
,
346 [out, retval] FolderItem
**ppid
);
349 HRESULT _NewEnum
( [out, retval] IUnknown
**ppunk
);
352 /*****************************************************************************
353 * FolderItemVerb interface
357 uuid(08ec3e00
-50b0
-11cf
-960c
-0080c7f4ee85
),
361 interface FolderItemVerb
: IDispatch
364 HRESULT Application
( [out, retval] IDispatch
**ppid
);
367 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
369 [propget, id(DISPID_VALUE
)]
370 HRESULT Name
( [out, retval] BSTR *pbs
);
375 /*****************************************************************************
376 * FolderItemVerbs interface
380 uuid(1f8352c0
-50b0
-11cf
-960c
-0080c7f4ee85
),
384 interface FolderItemVerbs
: IDispatch
387 HRESULT Count
( [out, retval] long *plCount
);
390 HRESULT Application
( [out, retval] IDispatch
**ppid
);
393 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
395 HRESULT Item
( [in, optional] VARIANT index
,
396 [out, retval] FolderItemVerb
**ppid
);
399 HRESULT _NewEnum
( [out, retval] IUnknown
**ppunk
);
402 /*****************************************************************************
403 * IShellDispatch interface
407 uuid(d8f015c0
-c278
-11ce
-a49e
-444553540000
),
412 interface IShellDispatch
: IDispatch
415 HRESULT Application
( [out, retval] IDispatch
**ppid
);
418 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
420 HRESULT NameSpace
( [in] VARIANT vDir
, [out, retval] Folder
**ppsdf
);
422 HRESULT BrowseForFolder
( [in] long Hwnd
,
425 [in, optional] VARIANT RootFolder
,
426 [out, retval] Folder
**ppsdf
);
428 HRESULT Windows
( [out, retval] IDispatch
**ppid
);
430 HRESULT Open
( [in] VARIANT vDir
);
432 HRESULT Explore
( [in] VARIANT vDir
);
434 HRESULT MinimizeAll
();
436 HRESULT UndoMinimizeALL
();
440 HRESULT CascadeWindows
();
442 HRESULT TileVertically
();
444 HRESULT TileHorizontally
();
446 HRESULT ShutdownWindows
();
454 HRESULT TrayProperties
();
460 HRESULT FindComputer
();
462 HRESULT RefreshMenu
();
464 HRESULT ControlPanelItem
( [in] BSTR szDir
);
469 uuid(a4c6892c
-3ba9
-11d2
-9dea
-00c04fb16162
),
474 interface IShellDispatch2
: IShellDispatch
476 HRESULT IsRestricted
([in] BSTR group
, [in] BSTR restriction
, [out, retval] long *value
);
477 HRESULT ShellExecute
([in] BSTR file
, [in, optional] VARIANT args
, [in, optional] VARIANT dir
,
478 [in, optional] VARIANT op
, [in, optional] VARIANT show
);
479 HRESULT FindPrinter
([in, optional] BSTR name
, [in, optional] BSTR location
, [in, optional] BSTR model
);
480 HRESULT GetSystemInformation
([in] BSTR name
, [out, retval] VARIANT *ret
);
481 HRESULT ServiceStart
([in] BSTR service
, [in] VARIANT persistent
, [out, retval] VARIANT *ret
);
482 HRESULT ServiceStop
([in] BSTR service
, [in] VARIANT persistent
, [out, retval] VARIANT *ret
);
483 HRESULT IsServiceRunning
([in] BSTR service
, [out, retval] VARIANT *running
);
484 HRESULT CanStartStopService
([in] BSTR service
, [out, retval] VARIANT *ret
);
485 HRESULT ShowBrowserBar
([in] BSTR clsid
, [in] VARIANT show
, [out, retval] VARIANT *ret
);
490 uuid(177160ca
-bb5a
-411c
-841d
-bd38facdeaa0
),
495 interface IShellDispatch3
: IShellDispatch2
497 HRESULT AddToRecent
([in] VARIANT file
, [in, optional] BSTR category
);
502 uuid(efd84b2d
-4bcf
-4298-be25
-eb542a59fbda
),
507 interface IShellDispatch4
: IShellDispatch3
509 HRESULT WindowsSecurity
();
510 HRESULT ToggleDesktop
();
511 HRESULT ExplorerPolicy
([in] BSTR policy
, [out, retval] VARIANT *value
);
512 HRESULT GetSetting
([in] long setting
, [out,retval] VARIANT_BOOL *result
);
517 uuid(866738b9
-6cf2
-4de8
-8767-f794ebe74f4e
),
522 interface IShellDispatch5
: IShellDispatch4
524 HRESULT WindowSwitcher
();
528 uuid(13709620-c279
-11ce
-a49e
-444553540000
)
532 [default] interface IShellDispatch2
;
536 uuid(0a89a860
-d7b1
-11ce
-8350-444553540000),
539 coclass ShellDispatchInproc
546 uuid(ca31ea20
-48d0
-11cf
-8350-444553540000)
548 enum ShellSpecialFolderConstants
{
560 ssfDESKTOPDIRECTORY
= 0x10,
566 ssfCOMMONSTARTMENU
= 0x16,
567 ssfCOMMONPROGRAMS
= 0x17,
568 ssfCOMMONSTARTUP
= 0x18,
569 ssfCOMMONDESKTOPDIR
= 0x19,
572 ssfLOCALAPPDATA
= 0x1c,
573 ssfALTSTARTUP
= 0x1d,
574 ssfCOMMONALTSTARTUP
= 0x1e,
575 ssfCOMMONFAVORITES
= 0x1f,
576 ssfINTERNETCACHE
= 0x20,
579 ssfCOMMONAPPDATA
= 0x23,
582 ssfPROGRAMFILES
= 0x26,
583 ssfMYPICTURES
= 0x27,
586 ssfPROGRAMFILESx86
= 0x30
587 } ShellSpecialFolderConstants
;
589 } /* library Shell32 */
591 /*****************************************************************************
592 * IAsyncOperation interface
595 uuid(3d8b0590
-f691
-11d2
-8ea9
-006097df5bd4
),
599 interface IAsyncOperation
: IUnknown
601 typedef [unique] IAsyncOperation
*LPASYNCOPERATION
;
603 HRESULT SetAsyncMode
([in] BOOL fDoOpAsync
);
605 HRESULT GetAsyncMode
([out] BOOL
*pfIsOpAsync
);
607 HRESULT StartOperation
([in, unique, optional] IBindCtx
*pbcReserved
);
609 HRESULT InOperation
([out] BOOL
*pfInAsyncOp
);
611 HRESULT EndOperation
(
612 [in] HRESULT hResult,
613 [in, unique] IBindCtx
*pbcReserved
,
614 [in] DWORD dwEffects
);