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
406 uuid(d8f015c0
-c278
-11ce
-a49e
-444553540000
),
411 interface IShellDispatch
: IDispatch
414 HRESULT Application
( [out, retval] IDispatch
**ppid
);
417 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
419 HRESULT NameSpace
( [in] VARIANT vDir
, [out, retval] Folder
**ppsdf
);
421 HRESULT BrowseForFolder
( [in] long Hwnd
,
424 [in, optional] VARIANT RootFolder
,
425 [out, retval] Folder
**ppsdf
);
427 HRESULT Windows
( [out, retval] IDispatch
**ppid
);
429 HRESULT Open
( [in] VARIANT vDir
);
431 HRESULT Explore
( [in] VARIANT vDir
);
433 HRESULT MinimizeAll
();
435 HRESULT UndoMinimizeALL
();
439 HRESULT CascadeWindows
();
441 HRESULT TileVertically
();
443 HRESULT TileHorizontally
();
445 HRESULT ShutdownWindows
();
453 HRESULT TrayProperties
();
459 HRESULT FindComputer
();
461 HRESULT RefreshMenu
();
463 HRESULT ControlPanelItem
( [in] BSTR szDir
);
467 uuid(a4c6892c
-3ba9
-11d2
-9dea
-00c04fb16162
),
472 interface IShellDispatch2
: IShellDispatch
474 HRESULT IsRestricted
([in] BSTR group
, [in] BSTR restriction
, [out, retval] long *value
);
475 HRESULT ShellExecute
([in] BSTR file
, [in, optional] VARIANT args
, [in, optional] VARIANT dir
,
476 [in, optional] VARIANT op
, [in, optional] VARIANT show
);
477 HRESULT FindPrinter
([in, optional] BSTR name
, [in, optional] BSTR location
, [in, optional] BSTR model
);
478 HRESULT GetSystemInformation
([in] BSTR name
, [out, retval] VARIANT *ret
);
479 HRESULT ServiceStart
([in] BSTR service
, [in] VARIANT persistent
, [out, retval] VARIANT *ret
);
480 HRESULT ServiceStop
([in] BSTR service
, [in] VARIANT persistent
, [out, retval] VARIANT *ret
);
481 HRESULT IsServiceRunning
([in] BSTR service
, [out, retval] VARIANT *running
);
482 HRESULT CanStartStopService
([in] BSTR service
, [out, retval] VARIANT *ret
);
483 HRESULT ShowBrowserBar
([in] BSTR clsid
, [in] VARIANT show
, [out, retval] VARIANT *ret
);
487 uuid(177160ca
-bb5a
-411c
-841d
-bd38facdeaa0
),
492 interface IShellDispatch3
: IShellDispatch2
494 HRESULT AddToRecent
([in] VARIANT file
, [in, optional] BSTR category
);
498 uuid(efd84b2d
-4bcf
-4298-be25
-eb542a59fbda
),
503 interface IShellDispatch4
: IShellDispatch3
505 HRESULT WindowsSecurity
();
506 HRESULT ToggleDesktop
();
507 HRESULT ExplorerPolicy
([in] BSTR policy
, [out, retval] VARIANT *value
);
508 HRESULT GetSetting
([in] long setting
, [out,retval] VARIANT_BOOL *result
);
512 uuid(866738b9
-6cf2
-4de8
-8767-f794ebe74f4e
),
517 interface IShellDispatch5
: IShellDispatch4
519 HRESULT WindowSwitcher
();
523 uuid(286e6f1b
-7113-4355-9562-96b7e9d64c54
),
528 interface IShellDispatch6
: IShellDispatch5
530 HRESULT SearchCommand
(void);
534 uuid(13709620-c279
-11ce
-a49e
-444553540000
)
538 [default] interface IShellDispatch6
;
542 uuid(0a89a860
-d7b1
-11ce
-8350-444553540000),
545 coclass ShellDispatchInproc
552 uuid(ca31ea20
-48d0
-11cf
-8350-444553540000)
554 enum ShellSpecialFolderConstants
{
566 ssfDESKTOPDIRECTORY
= 0x10,
572 ssfCOMMONSTARTMENU
= 0x16,
573 ssfCOMMONPROGRAMS
= 0x17,
574 ssfCOMMONSTARTUP
= 0x18,
575 ssfCOMMONDESKTOPDIR
= 0x19,
578 ssfLOCALAPPDATA
= 0x1c,
579 ssfALTSTARTUP
= 0x1d,
580 ssfCOMMONALTSTARTUP
= 0x1e,
581 ssfCOMMONFAVORITES
= 0x1f,
582 ssfINTERNETCACHE
= 0x20,
585 ssfCOMMONAPPDATA
= 0x23,
588 ssfPROGRAMFILES
= 0x26,
589 ssfMYPICTURES
= 0x27,
592 ssfPROGRAMFILESx86
= 0x30
593 } ShellSpecialFolderConstants
;
595 /*****************************************************************************
596 * IShellFolderViewDual interface
600 uuid(742a99a0
-c77e
-11d0
-a32c
-00a0c91eedba
)
602 enum ShellFolderViewOptions
604 SFVVO_SHOWALLOBJECTS
= 0x00000001,
605 SFVVO_SHOWEXTENSIONS
= 0x00000002,
606 SFVVO_SHOWCOMPCOLOR
= 0x00000008,
607 SFVVO_SHOWSYSFILES
= 0x00000020,
608 SFVVO_WIN95CLASSIC
= 0x00000040,
609 SFVVO_DOUBLECLICKINWEBVIEW
= 0x00000080,
610 SFVVO_DESKTOPHTML
= 0x00000200
611 } ShellFolderViewOptions
;
614 uuid(e7a1af80
-4d96
-11cf
-960c
-0080c7f4ee85
),
619 interface IShellFolderViewDual
: IDispatch
622 HRESULT Application
([out, retval] IDispatch
**app
);
625 HRESULT Parent
([out, retval] IDispatch
**parent
);
628 HRESULT Folder
([out, retval] Folder
**folder
);
630 HRESULT SelectedItems
([out, retval] FolderItems
**items
);
633 HRESULT FocusedItem
([out, retval] FolderItem
**item
);
635 HRESULT SelectItem
([in] VARIANT *item
, [in] int flags
);
637 HRESULT PopupItemMenu
([in] FolderItem
*item
,
638 [in, optional] VARIANT vx
,
639 [in, optional] VARIANT vy
,
640 [out, retval] BSTR *command
);
642 HRESULT Script
([out, retval] IDispatch
**script
);
645 HRESULT ViewOptions
([out, retval] long *options
);
649 uuid(31c147b6
-0ade
-4a3c
-b514
-ddf932ef6d17
),
654 interface IShellFolderViewDual2
: IShellFolderViewDual
657 HRESULT CurrentViewMode
([out, retval] UINT
*mode
);
660 HRESULT CurrentViewMode
([in] UINT mode
);
662 HRESULT SelectItemRelative
([in] int relative
);
666 uuid(29ec8e6c
-46d3
-411f
-baaa
-611a6c9cac66
),
671 interface IShellFolderViewDual3
: IShellFolderViewDual2
674 HRESULT GroupBy
([out, retval] BSTR *groupby
);
677 HRESULT GroupBy
([in] BSTR groupby
);
680 HRESULT FolderFlags
([out, retval] DWORD
*flags
);
683 HRESULT FolderFlags
([in] DWORD flags
);
686 HRESULT SortColumns
([out, retval] BSTR *sortcolumns
);
689 HRESULT SortColumns
([in] BSTR sortcolumns
);
692 HRESULT IconSize
([in] int icon_size
);
695 HRESULT IconSize
([out, retval] int *icon_size
);
697 HRESULT FilterView
([in, unique] BSTR filter_text
);
701 uuid(62112aa1
-ebe4
-11cf
-a5fb
-0020afe7292d
)
703 coclass ShellFolderView
705 [default] interface IShellFolderViewDual3
;
706 [default, source] dispinterface DShellFolderViewEvents
;
709 } /* library Shell32 */
711 /*****************************************************************************
712 * IAsyncOperation interface
715 uuid(3d8b0590
-f691
-11d2
-8ea9
-006097df5bd4
),
719 interface IAsyncOperation
: IUnknown
721 typedef [unique] IAsyncOperation
*LPASYNCOPERATION
;
723 HRESULT SetAsyncMode
([in] BOOL fDoOpAsync
);
725 HRESULT GetAsyncMode
([out] BOOL
*pfIsOpAsync
);
727 HRESULT StartOperation
([in, unique, optional] IBindCtx
*pbcReserved
);
729 HRESULT InOperation
([out] BOOL
*pfInAsyncOp
);
731 HRESULT EndOperation
(
732 [in] HRESULT hResult,
733 [in, unique] IBindCtx
*pbcReserved
,
734 [in] DWORD dwEffects
);