msi: Make WHEREVIEW able to deal directly with multiple tables.
[wine] / include / shldisp.idl
1 /*
2  * COM interfaces for shell objects
3  *
4  * Copyright (C) 2004 Maxime Bellengé
5  *
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.
10  *
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.
15  *
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
19  */
20
21 import "objidl.idl";
22 import "oleidl.idl";
23 import "oaidl.idl";
24 import "shtypes.idl";
25 import "servprov.idl";
26 import "comcat.idl";
27
28 #include <shdispid.h>
29
30 /*****************************************************************************
31  * IAutoComplete interface
32  */
33 [
34     local,
35     object,
36     uuid(00bb2762-6a77-11d0-a535-00c04fd7d062),
37     pointer_default(unique)
38 ]
39 interface IAutoComplete : IUnknown
40 {
41     typedef IAutoComplete *LPAUTOCOMPLETE;
42
43     HRESULT Init( [in] HWND hwndEdit,
44                   [in] IUnknown *punkACL,
45                   [in] LPCOLESTR pwszRegKeyPath,
46                   [in] LPCOLESTR pwszQuickComplete);
47     
48     HRESULT Enable( [in] BOOL fEnable );
49 }
50
51 /*****************************************************************************
52  * IAutoComplete2 interface
53  */
54 [
55     local,
56     object,
57     uuid(eac04bc0-3791-11d2-bb95-0060977b464c),
58     pointer_default(unique)
59 ]
60 interface IAutoComplete2 : IAutoComplete
61 {
62     typedef IAutoComplete2 *LPAUTOCOMPLETE2;
63
64     typedef enum _tagAUTOCOMPLETEOPTIONS
65         {
66             ACO_NONE           = 0x00,      /* No AutoComplete */
67             ACO_AUTOSUGGEST    = 0x01,      /* enable autosuggest dropdown */
68             ACO_AUTOAPPEND     = 0x02,      /* enable autoappend */
69             ACO_SEARCH         = 0x04,      /* add search entry to completion list */
70             ACO_FILTERPREFIXES = 0x08,      /* don't match common prefixes (www., http://, etc) */
71             ACO_USETAB         = 0x10,      /* use tab to select autosuggest entries */
72             ACO_UPDOWNKEYDROPSLIST = 0x20,  /* up/down arrow key invokes autosuggest dropdown (if enabled) */
73             ACO_RTLREADING     = 0x40,      /* enable RTL reading order for dropdown */
74         } AUTOCOMPLETEOPTIONS;
75
76     HRESULT SetOptions( [in] DWORD dwFlag);
77
78     HRESULT GetOptions( [out] DWORD *pdwFlag);
79 }
80
81 [
82     uuid(50a7e9b0-70ef-11d1-b75a-00a0c90564fe),
83     version(1.0)
84 ]
85 library Shell32
86 {
87
88 importlib("stdole2.tlb");
89
90 [
91     object,
92     oleautomation,
93     uuid(9ba05970-f6a8-11cf-a442-00a0c90a8f39),
94     pointer_default(unique)
95 ]
96 interface IFolderViewOC : IDispatch
97 {
98     HRESULT SetFolderView( [in] IDispatch *pdisp );
99 }
100
101 [
102     uuid(62112aa2-ebe4-11cf-a5fb-0020afe7292d)
103 ]
104 dispinterface DShellFolderViewEvents
105 {
106     properties:
107     methods:
108     [id(DISPID_SELECTIONCHANGED)]
109     void SelectionChanged();
110
111     [id(DISPID_FILELISTENUMDONE)]
112     void EnumDone();
113
114     [id(DISPID_VERBINVOKED)]
115     VARIANT_BOOL VerbInvoked();
116
117     [id(DISPID_DEFAULTVERBINVOKED)]
118     VARIANT_BOOL DefaultVerbInvoked();
119
120     [id(DISPID_BEGINDRAG)]
121     VARIANT_BOOL BeginDrag();
122 }
123
124 [
125     uuid(9ba05971-f6a8-11cf-a442-00a0c90a8f39),
126     hidden
127 ]
128 coclass ShellFolderViewOC
129 {
130     [default]         interface     IFolderViewOC;
131     [default, source] dispinterface DShellFolderViewEvents;
132 }
133
134 interface FolderItem;
135 interface FolderItems;
136 interface FolderItemVerb;
137 interface FolderItemVerbs;
138
139 /*****************************************************************************
140  * Folder interface
141  */
142 [
143     object,
144     uuid(bbcbde60-c3ff-11ce-8350-444553540000),
145     oleautomation,
146     dual
147 ]
148 interface Folder : IDispatch
149 {
150     [propget, id(DISPID_VALUE)]
151     HRESULT Title( [out, retval] BSTR *pbs );
152
153     [propget]
154     HRESULT Application( [out, retval] IDispatch **ppid );
155
156     [propget]
157     HRESULT Parent( [out, retval] IDispatch **ppid );
158
159     [propget]
160     HRESULT ParentFolder( [out, retval] Folder **ppsf );
161
162     HRESULT Items( [out, retval] FolderItems **ppid );
163
164     HRESULT ParseName( [in] BSTR bName, [out, retval] FolderItem **ppid );
165
166     HRESULT NewFolder( [in] BSTR bName, [in, optional] VARIANT vOptions );
167
168     HRESULT MoveHere( [in] VARIANT vItem, [in, optional] VARIANT vOptions );
169
170     HRESULT CopyHere( [in] VARIANT vItem, [in, optional] VARIANT vOptions );
171
172     HRESULT GetDetailsOf( [in] VARIANT vItem,
173         [in] int iColumn,
174         [out, retval] BSTR *pbs );
175 }
176
177 /*****************************************************************************
178  * Folder2 interface
179  */
180 [
181     object,
182     uuid(f0d2d8ef-3890-11d2-bf8b-00c04fb93661),
183     oleautomation,
184     dual
185 ]
186 interface Folder2 : Folder
187 {
188     [propget]
189     HRESULT Self( [out, retval] FolderItem **ppfi );
190
191     [propget]
192     HRESULT OfflineStatus( [out, retval] LONG *pul );
193
194     HRESULT Synchronize();
195
196     [propget, id(1)]
197     HRESULT HaveToShowWebViewBarricade(
198         [out, retval] VARIANT_BOOL *pbHaveToShowWebViewBarricade );
199
200     HRESULT DismissedWebViewBarricade();
201 }
202
203 /*****************************************************************************
204  * Folder3 interface
205  */
206 [
207     object,
208     uuid(a7ae5f64-c4d7-4d7f-9307-4d24ee54b841),
209     oleautomation,
210     dual
211 ]
212 interface Folder3 : Folder2
213 {
214     [propget, id(2)]
215     HRESULT ShowWebViewBarricade(
216         [out, retval] VARIANT_BOOL *pbShowWebViewBarricade );
217
218     [propput, id(2)]
219     HRESULT ShowWebViewBarricade( [in] VARIANT_BOOL bShowWebViewBarricade );
220 }
221
222 /*****************************************************************************
223  * FolderItem interface
224  */
225 [
226     object,
227     uuid(fac32c80-cbe4-11ce-8350-444553540000),
228     oleautomation,
229     dual
230 ]
231 interface FolderItem : IDispatch
232 {
233     typedef FolderItem *LPFOLDERITEM;
234
235     [propget]
236     HRESULT Application( [out, retval] IDispatch **ppid );
237
238     [propget]
239     HRESULT Parent( [out, retval] IDispatch **ppid );
240
241     [propget, id(DISPID_VALUE)]
242     HRESULT Name( [out, retval] BSTR *pbs );
243
244     [propput, id(DISPID_VALUE)]
245     HRESULT Name( [in] BSTR bs );
246
247     [propget]
248     HRESULT Path( [out, retval] BSTR *pbs );
249
250     [propget]
251     HRESULT GetLink( [out, retval] IDispatch **ppid );
252
253     [propget]
254     HRESULT GetFolder( [out, retval] IDispatch **ppid );
255
256     [propget]
257     HRESULT IsLink( [out, retval] VARIANT_BOOL *pb );
258
259     [propget]
260     HRESULT IsFolder( [out, retval] VARIANT_BOOL *pb );
261
262     [propget]
263     HRESULT IsFileSystem( [out, retval] VARIANT_BOOL *pb );
264
265     [propget]
266     HRESULT IsBrowsable( [out, retval] VARIANT_BOOL *pb );
267
268     [propget]
269     HRESULT ModifyDate( [out, retval] DATE *pdt );
270
271     [propput]
272     HRESULT ModifyDate( [in] DATE dt );
273
274     [propget]
275     HRESULT Size( [out, retval] LONG *pul );
276
277     [propget]
278     HRESULT Type( [out, retval] BSTR *pbs );
279
280     HRESULT Verbs( [out, retval] FolderItemVerbs **ppfic );
281
282     HRESULT InvokeVerb( [in, optional] VARIANT vVerb );
283 }
284
285 /*****************************************************************************
286  * FolderItems interface
287  */
288 [
289     object,
290     uuid(744129e0-cbe5-11ce-8350-444553540000),
291     oleautomation,
292     dual
293 ]
294 interface FolderItems : IDispatch
295 {
296     [propget]
297     HRESULT Count( [out, retval] long *plCount );
298
299     [propget]
300     HRESULT Application( [out, retval] IDispatch **ppid );
301
302     [propget]
303     HRESULT Parent( [out, retval] IDispatch **ppid );
304
305     HRESULT Item( [in, optional] VARIANT index,
306         [out, retval] FolderItem **ppid );
307
308     [id(DISPID_NEWENUM)]
309     HRESULT _NewEnum( [out, retval] IUnknown **ppunk );
310 }
311
312 /*****************************************************************************
313  * FolderItemVerb interface
314  */
315 [
316     object,
317     uuid(08ec3e00-50b0-11cf-960c-0080c7f4ee85),
318     oleautomation,
319     dual
320 ]
321 interface FolderItemVerb : IDispatch
322 {
323     [propget]
324     HRESULT Application( [out, retval] IDispatch **ppid );
325
326     [propget]
327     HRESULT Parent( [out, retval] IDispatch **ppid );
328
329     [propget, id(DISPID_VALUE)]
330     HRESULT Name( [out, retval] BSTR *pbs );
331
332     HRESULT DoIt();
333 }
334
335 /*****************************************************************************
336  * FolderItemVerbs interface
337  */
338 [
339     object,
340     uuid(1f8352c0-50b0-11cf-960c-0080c7f4ee85),
341     oleautomation,
342     dual
343 ]
344 interface FolderItemVerbs : IDispatch
345 {
346     [propget]
347     HRESULT Count( [out, retval] long *plCount );
348
349     [propget]
350     HRESULT Application( [out, retval] IDispatch **ppid );
351
352     [propget]
353     HRESULT Parent( [out, retval] IDispatch **ppid );
354
355     HRESULT Item( [in, optional] VARIANT index,
356         [out, retval] FolderItemVerb **ppid );
357
358     [id(DISPID_NEWENUM)]
359     HRESULT _NewEnum( [out, retval] IUnknown **ppunk );
360 }
361
362 /*****************************************************************************
363  * IShellDispatch interface
364  */
365 [
366     object,
367     uuid(d8f015c0-c278-11ce-a49e-444553540000),
368     oleautomation,
369     hidden,
370     dual
371 ]
372 interface IShellDispatch : IDispatch
373 {
374     [propget]
375     HRESULT Application( [out, retval] IDispatch **ppid );
376
377     [propget]
378     HRESULT Parent( [out, retval] IDispatch **ppid );
379
380     HRESULT NameSpace( [in] VARIANT vDir, [out, retval] Folder **ppsdf );
381
382     HRESULT BrowseForFolder( [in] long Hwnd,
383         [in] BSTR Title,
384         [in] long Options,
385         [in, optional] VARIANT RootFolder,
386         [out, retval] Folder **ppsdf );
387
388     HRESULT Windows( [out, retval] IDispatch **ppid );
389
390     HRESULT Open( [in] VARIANT vDir );
391
392     HRESULT Explore( [in] VARIANT vDir );
393
394     HRESULT MinimizeAll();
395
396     HRESULT UndoMinimizeALL();
397
398     HRESULT FileRun();
399
400     HRESULT CascadeWindows();
401
402     HRESULT TileVertically();
403
404     HRESULT TileHorizontally();
405
406     HRESULT ShutdownWindows();
407
408     HRESULT Suspend();
409
410     HRESULT EjectPC();
411
412     HRESULT SetTime();
413
414     HRESULT TrayProperties();
415
416     HRESULT Help();
417
418     HRESULT FindFiles();
419
420     HRESULT FindComputer();
421
422     HRESULT RefreshMenu();
423
424     HRESULT ControlPanelItem( [in] BSTR szDir );
425 }
426
427 [
428     uuid(13709620-c279-11ce-a49e-444553540000)
429 ]
430 coclass Shell
431 {
432     [default] interface IShellDispatch;
433 }
434
435 [
436     uuid(0a89a860-d7b1-11ce-8350-444553540000),
437     hidden
438 ]
439 coclass ShellDispatchInproc
440 {
441     interface IUnknown;
442 }
443
444 typedef
445 [
446     uuid(ca31ea20-48d0-11cf-8350-444553540000)
447 ]
448 enum ShellSpecialFolderConstants {
449     ssfDESKTOP          = 0x00,
450     ssfPROGRAMS         = 0x02,
451     ssfCONTROLS         = 0x03,
452     ssfPRINTERS         = 0x04,
453     ssfPERSONAL         = 0x05,
454     ssfFAVORITES        = 0x06,
455     ssfSTARTUP          = 0x07,
456     ssfRECENT           = 0x08,
457     ssfSENDTO           = 0x09,
458     ssfBITBUCKET        = 0x0a,
459     ssfSTARTMENU        = 0x0b,
460     ssfDESKTOPDIRECTORY = 0x10,
461     ssfDRIVES           = 0x11,
462     ssfNETWORK          = 0x12,
463     ssfNETHOOD          = 0x13,
464     ssfFONTS            = 0x14,
465     ssfTEMPLATES        = 0x15,
466     ssfCOMMONSTARTMENU  = 0x16,
467     ssfCOMMONPROGRAMS   = 0x17,
468     ssfCOMMONSTARTUP    = 0x18,
469     ssfCOMMONDESKTOPDIR = 0x19,
470     ssfAPPDATA          = 0x1a,
471     ssfPRINTHOOD        = 0x1b,
472     ssfLOCALAPPDATA     = 0x1c,
473     ssfALTSTARTUP       = 0x1d,
474     ssfCOMMONALTSTARTUP = 0x1e,
475     ssfCOMMONFAVORITES  = 0x1f,
476     ssfINTERNETCACHE    = 0x20,
477     ssfCOOKIES          = 0x21,
478     ssfHISTORY          = 0x22,
479     ssfCOMMONAPPDATA    = 0x23,
480     ssfWINDOWS          = 0x24,
481     ssfSYSTEM           = 0x25,
482     ssfPROGRAMFILES     = 0x26,
483     ssfMYPICTURES       = 0x27,
484     ssfPROFILE          = 0x28,
485     ssfSYSTEMx86        = 0x29,
486     ssfPROGRAMFILESx86  = 0x30
487 } ShellSpecialFolderConstants;
488
489 } /* library Shell32 */
490
491 /*****************************************************************************
492  * IAsyncOperation interface
493  */
494 [
495     uuid(3d8b0590-f691-11d2-8ea9-006097df5bd4),
496     object,
497 ]
498
499 interface IAsyncOperation : IUnknown
500 {
501     typedef [unique] IAsyncOperation *LPASYNCOPERATION;
502
503     HRESULT SetAsyncMode([in] BOOL fDoOpAsync);
504
505     HRESULT GetAsyncMode([out] BOOL *pfIsOpAsync);
506
507     HRESULT StartOperation([in, unique, optional] IBindCtx *pbcReserved);
508
509     HRESULT InOperation([out] BOOL *pfInAsyncOp);
510
511     HRESULT EndOperation(
512             [in] HRESULT hResult,
513             [in, unique] IBindCtx *pbcReserved,
514             [in] DWORD dwEffects);
515 }