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