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 ACO_WORD_FILTER
= 0x80, /* treat the autocompleted suggestion as a phrase for search purposes */
103 ACO_NOPREFIXFILTERING
= 0x100, /* always display all suggestions */
104 } AUTOCOMPLETEOPTIONS
;
106 HRESULT SetOptions
( [in] DWORD dwFlag
);
108 HRESULT GetOptions
( [out] DWORD
*pdwFlag
);
112 uuid(50a7e9b0
-70ef
-11d1
-b75a
-00a0c90564fe
),
118 importlib
("stdole2.tlb");
123 uuid(9ba05970
-f6a8
-11cf
-a442
-00a0c90a8f39
),
124 pointer_default(unique)
126 interface IFolderViewOC
: IDispatch
128 HRESULT SetFolderView
( [in] IDispatch
*pdisp
);
132 uuid(62112aa2
-ebe4
-11cf
-a5fb
-0020afe7292d
)
134 dispinterface DShellFolderViewEvents
138 [id(DISPID_SELECTIONCHANGED
)]
139 void SelectionChanged
();
141 [id(DISPID_FILELISTENUMDONE
)]
144 [id(DISPID_VERBINVOKED
)]
145 VARIANT_BOOL VerbInvoked
();
147 [id(DISPID_DEFAULTVERBINVOKED
)]
148 VARIANT_BOOL DefaultVerbInvoked
();
150 [id(DISPID_BEGINDRAG
)]
151 VARIANT_BOOL BeginDrag
();
155 uuid(9ba05971
-f6a8
-11cf
-a442
-00a0c90a8f39
),
158 coclass ShellFolderViewOC
160 [default] interface IFolderViewOC
;
161 [default, source] dispinterface DShellFolderViewEvents
;
164 interface FolderItem
;
165 interface FolderItems
;
166 interface FolderItemVerb
;
167 interface FolderItemVerbs
;
169 /*****************************************************************************
174 uuid(bbcbde60
-c3ff
-11ce
-8350-444553540000),
178 interface Folder
: IDispatch
180 [propget, id(DISPID_VALUE
)]
181 HRESULT Title
( [out, retval] BSTR *pbs
);
184 HRESULT Application
( [out, retval] IDispatch
**ppid
);
187 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
190 HRESULT ParentFolder
( [out, retval] Folder
**ppsf
);
192 HRESULT Items
( [out, retval] FolderItems
**ppid
);
194 HRESULT ParseName
( [in] BSTR bName
, [out, retval] FolderItem
**ppid
);
196 HRESULT NewFolder
( [in] BSTR bName
, [in, optional] VARIANT vOptions
);
198 HRESULT MoveHere
( [in] VARIANT vItem
, [in, optional] VARIANT vOptions
);
200 HRESULT CopyHere
( [in] VARIANT vItem
, [in, optional] VARIANT vOptions
);
202 HRESULT GetDetailsOf
( [in] VARIANT vItem
,
204 [out, retval] BSTR *pbs
);
207 /*****************************************************************************
212 uuid(f0d2d8ef
-3890-11d2
-bf8b
-00c04fb93661
),
216 interface Folder2
: Folder
219 HRESULT Self
( [out, retval] FolderItem
**ppfi
);
222 HRESULT OfflineStatus
( [out, retval] LONG *pul
);
224 HRESULT Synchronize
();
227 HRESULT HaveToShowWebViewBarricade
(
228 [out, retval] VARIANT_BOOL *pbHaveToShowWebViewBarricade
);
230 HRESULT DismissedWebViewBarricade
();
233 /*****************************************************************************
238 uuid(a7ae5f64
-c4d7
-4d7f
-9307-4d24ee54b841
),
242 interface Folder3
: Folder2
245 HRESULT ShowWebViewBarricade
(
246 [out, retval] VARIANT_BOOL *pbShowWebViewBarricade
);
249 HRESULT ShowWebViewBarricade
( [in] VARIANT_BOOL bShowWebViewBarricade
);
252 /*****************************************************************************
253 * FolderItem interface
257 uuid(fac32c80
-cbe4
-11ce
-8350-444553540000),
261 interface FolderItem
: IDispatch
263 typedef FolderItem
*LPFOLDERITEM
;
266 HRESULT Application
( [out, retval] IDispatch
**ppid
);
269 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
271 [propget, id(DISPID_VALUE
)]
272 HRESULT Name
( [out, retval] BSTR *pbs
);
274 [propput, id(DISPID_VALUE
)]
275 HRESULT Name
( [in] BSTR bs
);
278 HRESULT Path
( [out, retval] BSTR *pbs
);
281 HRESULT GetLink
( [out, retval] IDispatch
**ppid
);
284 HRESULT GetFolder
( [out, retval] IDispatch
**ppid
);
287 HRESULT IsLink
( [out, retval] VARIANT_BOOL *pb
);
290 HRESULT IsFolder
( [out, retval] VARIANT_BOOL *pb
);
293 HRESULT IsFileSystem
( [out, retval] VARIANT_BOOL *pb
);
296 HRESULT IsBrowsable
( [out, retval] VARIANT_BOOL *pb
);
299 HRESULT ModifyDate
( [out, retval] DATE
*pdt
);
302 HRESULT ModifyDate
( [in] DATE dt
);
305 HRESULT Size
( [out, retval] LONG *pul
);
308 HRESULT Type
( [out, retval] BSTR *pbs
);
310 HRESULT Verbs
( [out, retval] FolderItemVerbs
**ppfic
);
312 HRESULT InvokeVerb
( [in, optional] VARIANT vVerb
);
317 uuid(edc817aa
-92b8
-11d1
-b075
-00c04fc33aa5
),
321 interface FolderItem2
: FolderItem
323 HRESULT InvokeVerbEx
([in, optional] VARIANT verb
, [in, optional] VARIANT args
);
324 HRESULT ExtendedProperty
([in] BSTR propname
, [out, retval] VARIANT *ret
);
327 /*****************************************************************************
328 * FolderItems interface
332 uuid(744129e0
-cbe5
-11ce
-8350-444553540000),
336 interface FolderItems
: IDispatch
339 HRESULT Count
( [out, retval] long *plCount
);
342 HRESULT Application
( [out, retval] IDispatch
**ppid
);
345 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
347 HRESULT Item
( [in, optional] VARIANT index
,
348 [out, retval] FolderItem
**ppid
);
351 HRESULT _NewEnum
( [out, retval] IUnknown
**ppunk
);
354 /*****************************************************************************
355 * FolderItems2 interface
358 uuid(c94f0ad0
-f363
-11d2
-a327
-00c04f8eec7f
),
362 interface FolderItems2
: FolderItems
364 HRESULT InvokeVerbEx
( [in, optional] VARIANT verb
,
365 [in, optional] VARIANT args
);
368 /*****************************************************************************
369 * FolderItems3 interface
372 uuid(eaa7c309
-bbec
-49d5
-821d
-64d966cb667f
),
376 interface FolderItems3
: FolderItems2
378 HRESULT Filter
( [in] long flags
, [in] BSTR spec
);
381 HRESULT Verbs
( [out, retval] FolderItemVerbs
**ppfic
);
384 /*****************************************************************************
385 * FolderItemVerb interface
389 uuid(08ec3e00
-50b0
-11cf
-960c
-0080c7f4ee85
),
393 interface FolderItemVerb
: IDispatch
396 HRESULT Application
( [out, retval] IDispatch
**ppid
);
399 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
401 [propget, id(DISPID_VALUE
)]
402 HRESULT Name
( [out, retval] BSTR *pbs
);
407 /*****************************************************************************
408 * FolderItemVerbs interface
412 uuid(1f8352c0
-50b0
-11cf
-960c
-0080c7f4ee85
),
416 interface FolderItemVerbs
: IDispatch
419 HRESULT Count
( [out, retval] long *plCount
);
422 HRESULT Application
( [out, retval] IDispatch
**ppid
);
425 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
427 HRESULT Item
( [in, optional] VARIANT index
,
428 [out, retval] FolderItemVerb
**ppid
);
431 HRESULT _NewEnum
( [out, retval] IUnknown
**ppunk
);
434 /*****************************************************************************
435 * IShellDispatch interface
438 uuid(d8f015c0
-c278
-11ce
-a49e
-444553540000
),
443 interface IShellDispatch
: IDispatch
446 HRESULT Application
( [out, retval] IDispatch
**ppid
);
449 HRESULT Parent
( [out, retval] IDispatch
**ppid
);
451 HRESULT NameSpace
( [in] VARIANT vDir
, [out, retval] Folder
**ppsdf
);
453 HRESULT BrowseForFolder
( [in] long Hwnd
,
456 [in, optional] VARIANT RootFolder
,
457 [out, retval] Folder
**ppsdf
);
459 HRESULT Windows
( [out, retval] IDispatch
**ppid
);
461 HRESULT Open
( [in] VARIANT vDir
);
463 HRESULT Explore
( [in] VARIANT vDir
);
465 HRESULT MinimizeAll
();
467 HRESULT UndoMinimizeALL
();
471 HRESULT CascadeWindows
();
473 HRESULT TileVertically
();
475 HRESULT TileHorizontally
();
477 HRESULT ShutdownWindows
();
485 HRESULT TrayProperties
();
491 HRESULT FindComputer
();
493 HRESULT RefreshMenu
();
495 HRESULT ControlPanelItem
( [in] BSTR szDir
);
499 uuid(a4c6892c
-3ba9
-11d2
-9dea
-00c04fb16162
),
504 interface IShellDispatch2
: IShellDispatch
506 HRESULT IsRestricted
([in] BSTR group
, [in] BSTR restriction
, [out, retval] long *value
);
507 HRESULT ShellExecute
([in] BSTR file
, [in, optional] VARIANT args
, [in, optional] VARIANT dir
,
508 [in, optional] VARIANT op
, [in, optional] VARIANT show
);
509 HRESULT FindPrinter
([in, optional] BSTR name
, [in, optional] BSTR location
, [in, optional] BSTR model
);
510 HRESULT GetSystemInformation
([in] BSTR name
, [out, retval] VARIANT *ret
);
511 HRESULT ServiceStart
([in] BSTR service
, [in] VARIANT persistent
, [out, retval] VARIANT *ret
);
512 HRESULT ServiceStop
([in] BSTR service
, [in] VARIANT persistent
, [out, retval] VARIANT *ret
);
513 HRESULT IsServiceRunning
([in] BSTR service
, [out, retval] VARIANT *running
);
514 HRESULT CanStartStopService
([in] BSTR service
, [out, retval] VARIANT *ret
);
515 HRESULT ShowBrowserBar
([in] BSTR clsid
, [in] VARIANT show
, [out, retval] VARIANT *ret
);
519 uuid(177160ca
-bb5a
-411c
-841d
-bd38facdeaa0
),
524 interface IShellDispatch3
: IShellDispatch2
526 HRESULT AddToRecent
([in] VARIANT file
, [in, optional] BSTR category
);
530 uuid(efd84b2d
-4bcf
-4298-be25
-eb542a59fbda
),
535 interface IShellDispatch4
: IShellDispatch3
537 HRESULT WindowsSecurity
();
538 HRESULT ToggleDesktop
();
539 HRESULT ExplorerPolicy
([in] BSTR policy
, [out, retval] VARIANT *value
);
540 HRESULT GetSetting
([in] long setting
, [out,retval] VARIANT_BOOL *result
);
544 uuid(866738b9
-6cf2
-4de8
-8767-f794ebe74f4e
),
549 interface IShellDispatch5
: IShellDispatch4
551 HRESULT WindowSwitcher
();
555 uuid(286e6f1b
-7113-4355-9562-96b7e9d64c54
),
560 interface IShellDispatch6
: IShellDispatch5
562 HRESULT SearchCommand
(void);
566 uuid(13709620-c279
-11ce
-a49e
-444553540000
)
570 [default] interface IShellDispatch6
;
574 uuid(0a89a860
-d7b1
-11ce
-8350-444553540000),
577 coclass ShellDispatchInproc
584 uuid(ca31ea20
-48d0
-11cf
-8350-444553540000)
586 enum ShellSpecialFolderConstants
{
598 ssfDESKTOPDIRECTORY
= 0x10,
604 ssfCOMMONSTARTMENU
= 0x16,
605 ssfCOMMONPROGRAMS
= 0x17,
606 ssfCOMMONSTARTUP
= 0x18,
607 ssfCOMMONDESKTOPDIR
= 0x19,
610 ssfLOCALAPPDATA
= 0x1c,
611 ssfALTSTARTUP
= 0x1d,
612 ssfCOMMONALTSTARTUP
= 0x1e,
613 ssfCOMMONFAVORITES
= 0x1f,
614 ssfINTERNETCACHE
= 0x20,
617 ssfCOMMONAPPDATA
= 0x23,
620 ssfPROGRAMFILES
= 0x26,
621 ssfMYPICTURES
= 0x27,
624 ssfPROGRAMFILESx86
= 0x30
625 } ShellSpecialFolderConstants
;
627 /*****************************************************************************
628 * IShellFolderViewDual interface
632 uuid(742a99a0
-c77e
-11d0
-a32c
-00a0c91eedba
)
634 enum ShellFolderViewOptions
636 SFVVO_SHOWALLOBJECTS
= 0x00000001,
637 SFVVO_SHOWEXTENSIONS
= 0x00000002,
638 SFVVO_SHOWCOMPCOLOR
= 0x00000008,
639 SFVVO_SHOWSYSFILES
= 0x00000020,
640 SFVVO_WIN95CLASSIC
= 0x00000040,
641 SFVVO_DOUBLECLICKINWEBVIEW
= 0x00000080,
642 SFVVO_DESKTOPHTML
= 0x00000200
643 } ShellFolderViewOptions
;
646 uuid(e7a1af80
-4d96
-11cf
-960c
-0080c7f4ee85
),
651 interface IShellFolderViewDual
: IDispatch
654 HRESULT Application
([out, retval] IDispatch
**app
);
657 HRESULT Parent
([out, retval] IDispatch
**parent
);
660 HRESULT Folder
([out, retval] Folder
**folder
);
662 HRESULT SelectedItems
([out, retval] FolderItems
**items
);
665 HRESULT FocusedItem
([out, retval] FolderItem
**item
);
667 HRESULT SelectItem
([in] VARIANT *item
, [in] int flags
);
669 HRESULT PopupItemMenu
([in] FolderItem
*item
,
670 [in, optional] VARIANT vx
,
671 [in, optional] VARIANT vy
,
672 [out, retval] BSTR *command
);
674 HRESULT Script
([out, retval] IDispatch
**script
);
677 HRESULT ViewOptions
([out, retval] long *options
);
681 uuid(31c147b6
-0ade
-4a3c
-b514
-ddf932ef6d17
),
686 interface IShellFolderViewDual2
: IShellFolderViewDual
689 HRESULT CurrentViewMode
([out, retval] UINT
*mode
);
692 HRESULT CurrentViewMode
([in] UINT mode
);
694 HRESULT SelectItemRelative
([in] int relative
);
698 uuid(29ec8e6c
-46d3
-411f
-baaa
-611a6c9cac66
),
703 interface IShellFolderViewDual3
: IShellFolderViewDual2
706 HRESULT GroupBy
([out, retval] BSTR *groupby
);
709 HRESULT GroupBy
([in] BSTR groupby
);
712 HRESULT FolderFlags
([out, retval] DWORD
*flags
);
715 HRESULT FolderFlags
([in] DWORD flags
);
718 HRESULT SortColumns
([out, retval] BSTR *sortcolumns
);
721 HRESULT SortColumns
([in] BSTR sortcolumns
);
724 HRESULT IconSize
([in] int icon_size
);
727 HRESULT IconSize
([out, retval] int *icon_size
);
729 HRESULT FilterView
([in, unique] BSTR filter_text
);
733 uuid(62112aa1
-ebe4
-11cf
-a5fb
-0020afe7292d
)
735 coclass ShellFolderView
737 [default] interface IShellFolderViewDual3
;
738 [default, source] dispinterface DShellFolderViewEvents
;
741 /*****************************************************************************
742 * IShellLinkDual interface
745 uuid (88a05c00
-f000
-11ce
-8350-444553540000),
750 interface IShellLinkDual
: IDispatch
{
752 HRESULT Path
([out, retval] BSTR *pbs
);
755 HRESULT Path
([in] BSTR bs
);
758 HRESULT Description
([out, retval] BSTR *pbs
);
761 HRESULT Description
([in] BSTR bs
);
764 HRESULT WorkingDirectory
([out, retval] BSTR *pbs
);
767 HRESULT WorkingDirectory
([in] BSTR bs
);
770 HRESULT Arguments
([out, retval] BSTR *pbs
);
773 HRESULT Arguments
([in] BSTR bs
);
776 HRESULT Hotkey
([out, retval] int *piHK
);
779 HRESULT Hotkey
([in] int iHK
);
782 HRESULT ShowCommand
([out, retval] int *piShowCommand
);
785 HRESULT ShowCommand
([in] int iShowCommand
);
787 HRESULT Resolve
([in] int fFlags
);
789 HRESULT GetIconLocation
([out] BSTR *pbs
,
790 [out, retval] int *piIcon
);
792 HRESULT SetIconLocation
([in] BSTR bs
,
795 HRESULT Save
([in, optional] VARIANT vWhere
);
799 uuid (317ee249
-f12e
-11d2
-b1e4
-00c04f8eeb3e
),
804 interface IShellLinkDual2
: IShellLinkDual
{
806 HRESULT Target
([out, retval] FolderItem
**ppfi
);
810 uuid (11219420-1768-11d1
-95be
-00609797ea4f
),
813 coclass ShellLinkObject
{
814 [default] interface IShellLinkDual2
;
817 } /* library Shell32 */
819 /*****************************************************************************
820 * IAsyncOperation interface
823 uuid(3d8b0590
-f691
-11d2
-8ea9
-006097df5bd4
),
827 interface IAsyncOperation
: IUnknown
829 typedef [unique] IAsyncOperation
*LPASYNCOPERATION
;
831 HRESULT SetAsyncMode
([in] BOOL fDoOpAsync
);
833 HRESULT GetAsyncMode
([out] BOOL
*pfIsOpAsync
);
835 HRESULT StartOperation
([in, unique, optional] IBindCtx
*pbcReserved
);
837 HRESULT InOperation
([out] BOOL
*pfInAsyncOp
);
839 HRESULT EndOperation
(
840 [in] HRESULT hResult,
841 [in, unique] IBindCtx
*pbcReserved
,
842 [in] DWORD dwEffects
);