comdlg32: CDM_GETSPEC and CDM_GETFILEPATH should preserve double quotes in file lists.
[wine] / include / exdisp.idl
1 /*
2  * Defines the COM interfaces and APIs related to the IE Web browser
3  *
4  * Copyright (C) 2001 John R. Sheets (for CodeWeavers)
5  * Copyright (C) 2003 Alexandre Julliard
6  * Copyright (C) 2004 Jacek Caban
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21  */
22
23 import "ocidl.idl";
24 import "docobj.idl";
25
26 #include <olectl.h>
27 #include <exdispid.h>
28
29 /*****************************************************************************
30  * SHDocVw library
31  */
32 [
33     uuid(EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B),
34     version(1.1),
35     helpstring("Microsoft Internet Controls")
36 ]
37 library SHDocVw
38 {
39
40 importlib("stdole2.tlb");
41
42
43 /*****************************************************************************
44  * IWebBrowser interface
45  */
46 [
47     object,
48     oleautomation,
49     uuid(eab22ac1-30c1-11cf-a7eb-0000c05bae0b),
50     hidden,
51     dual
52 ]
53 interface IWebBrowser : IDispatch
54 {
55     typedef enum BrowserNavConstants
56     {
57         navOpenInNewWindow   = 0x1,
58         navNoHistory         = 0x2,
59         navNoReadFromCache   = 0x4,
60         navNoWriteToCache    = 0x8,
61         navAllowAutosearch   = 0x10,
62         navBrowserBar        = 0x20,
63         navHyperlink         = 0x40,
64         navEnforceRestricted = 0x80
65     } BrowserNavConstants;
66
67     typedef enum RefreshConstants
68     {
69         REFRESH_NORMAL     = 0,
70         REFRESH_IFEXPIRED  = 1,
71         REFRESH_COMPLETELY = 3
72     } RefreshConstants;
73
74     [id(100)] HRESULT GoBack();
75     [id(101)] HRESULT GoForward();
76     [id(102)] HRESULT GoHome();
77     [id(103)] HRESULT GoSearch();
78
79     [id(104)]
80     HRESULT Navigate(
81         [in] BSTR URL,
82         [in, optional] VARIANT *Flags,
83         [in, optional] VARIANT *TargetFrameName,
84         [in, optional] VARIANT *PostData,
85         [in, optional] VARIANT *Headers);
86
87     [id(DISPID_REFRESH)] HRESULT Refresh();
88     [id(105)] HRESULT Refresh2([in, optional] VARIANT *Level);
89     [id(106)] HRESULT Stop();
90     [id(200), propget] HRESULT Application([out, retval] IDispatch** ppDisp);
91     [id(201), propget] HRESULT Parent([out, retval] IDispatch** ppDisp);
92     [id(202), propget] HRESULT Container([out, retval] IDispatch** ppDisp);
93     [id(203), propget] HRESULT Document([out, retval] IDispatch** ppDisp);
94     [id(204), propget] HRESULT TopLevelContainer([out, retval] VARIANT_BOOL* pBool);
95     [id(205), propget] HRESULT Type([out, retval] BSTR* Type);
96     [id(206), propget] HRESULT Left([out, retval] long *pl);
97     [id(206), propput] HRESULT Left([in] long Left);
98     [id(207), propget] HRESULT Top([out, retval] long *pl);
99     [id(207), propput] HRESULT Top([in] long Top);
100     [id(208), propget] HRESULT Width([out, retval] long *pl);
101     [id(208), propput] HRESULT Width([in] long Width);
102     [id(209), propget] HRESULT Height([out, retval] long *pl);
103     [id(209), propput] HRESULT Height([in] long Height);
104     [id(210), propget] HRESULT LocationName([out, retval] BSTR *LocationName);
105     [id(211), propget] HRESULT LocationURL([out, retval] BSTR *LocationURL);
106     [id(212), propget] HRESULT Busy([out, retval] VARIANT_BOOL *pBool);
107 }
108
109 /*****************************************************************************
110  * DWebBrowserEvents dispinterface
111  */
112 [
113     uuid(eab22ac2-30c1-11CF-a7eb-0000C05bae0b),
114     hidden
115 ]
116 dispinterface DWebBrowserEvents
117 {
118     properties:
119     methods:
120     [id(DISPID_BEFORENAVIGATE)]
121     void BeforeNavigate(
122         [in] BSTR URL,
123         long Flags,
124         BSTR TargetFrameName,
125         VARIANT *PostData,
126         BSTR Headers,
127         [in, out] VARIANT_BOOL *Cancel);
128
129     [id(DISPID_NAVIGATECOMPLETE)]
130     void NavigateComplete([in] BSTR URL);
131
132     [id(DISPID_STATUSTEXTCHANGE)]
133     void StatusTextChange([in] BSTR Text);
134
135     [id(DISPID_PROGRESSCHANGE)]
136     void ProgressChange([in] long Progress, [in] long ProgressMax);
137
138     [id(DISPID_DOWNLOADCOMPLETE)]
139     void DownloadComplete();
140
141     [id(DISPID_COMMANDSTATECHANGE)]
142     void CommandStateChange([in] long Command, [in]VARIANT_BOOL Enable);
143
144     [id(DISPID_DOWNLOADBEGIN)]
145     void DownloadBegin();
146
147     [id(DISPID_NEWWINDOW)]
148     void NewWindow(
149         [in] BSTR URL,
150         [in] long Flags,
151         [in] BSTR TargetFrameName,
152         [in] VARIANT *PostData,
153         [in] BSTR Headers,
154         [in,out] VARIANT_BOOL *Processed);
155
156     [id(DISPID_TITLECHANGE)]
157     void TitleChange([in] BSTR Text);
158
159     [id(DISPID_FRAMEBEFORENAVIGATE)]
160     void FrameBeforeNavigate(
161         [in] BSTR URL,
162         long Flags,
163         BSTR TargetFrameName,
164         VARIANT *PostData,
165         BSTR Headers,
166         [in, out]VARIANT_BOOL *Cancel);
167
168     [id(DISPID_FRAMENAVIGATECOMPLETE)]
169     void FrameNavigateComplete([in] BSTR URL);
170
171     [id(DISPID_FRAMENEWWINDOW)]
172     void FrameNewWindow(
173         [in] BSTR URL,
174         [in] long Flags,
175         [in] BSTR TargetFrameName,
176         [in] VARIANT *PostData,
177         [in] BSTR Headers,
178         [in,out] VARIANT_BOOL *Processed);
179
180     [id(DISPID_QUIT)]
181     void Quit([in, out] VARIANT_BOOL *Cancel);
182
183     [id(DISPID_WINDOWMOVE)]
184     void WindowMove();
185
186     [id(DISPID_WINDOWRESIZE)]
187     void WindowResize();
188
189     [id(DISPID_WINDOWACTIVATE)]
190     void WindowActivate();
191
192     [id(DISPID_PROPERTYCHANGE)]
193     void PropertyChange([in] BSTR Property);
194 }
195
196 typedef
197 [
198     uuid(34a226e0-df30-11cf-89a9-00a0c9054129)
199 ]
200 enum CommandStateChangeConstants {
201     CSC_UPDATECOMMANDS  = -1,
202     CSC_NAVIGATEFORWARD = 1,
203     CSC_NAVIGATEBACK    = 2
204 } CommandStateChangeConstants;
205
206 /*****************************************************************************
207  * IWebBrowserApp interface
208  */
209 [
210     object,
211     oleautomation,
212     uuid(0002df05-0000-0000-c000-000000000046),
213     hidden,
214     dual
215 ]
216 interface IWebBrowserApp : IWebBrowser
217 {
218     [id(300)] HRESULT Quit();
219     [id(301)] HRESULT ClientToWindow([in,out] int* pcx, [in,out] int* pcy);
220     [id(302)] HRESULT PutProperty([in] BSTR Property, [in] VARIANT vtValue);
221     [id(303)] HRESULT GetProperty([in] BSTR Property, [out, retval] VARIANT *pvtValue);
222     [id(0), propget] HRESULT Name([out, retval] BSTR* Name);
223     [id(DISPID_HWND), propget] HRESULT HWND([out, retval] long *pHWND);
224     [id(400), propget] HRESULT FullName([out, retval] BSTR* FullName);
225     [id(401), propget] HRESULT Path([out, retval] BSTR* Path);
226     [id(402), propget] HRESULT Visible([out, retval] VARIANT_BOOL* pBool);
227     [id(402), propput] HRESULT Visible([in] VARIANT_BOOL Value);
228     [id(403), propget] HRESULT StatusBar([out, retval] VARIANT_BOOL* pBool);
229     [id(403), propput] HRESULT StatusBar([in] VARIANT_BOOL Value);
230     [id(404), propget] HRESULT StatusText([out, retval] BSTR *StatusText);
231     [id(404), propput] HRESULT StatusText([in] BSTR StatusText);
232     [id(405), propget] HRESULT ToolBar([out, retval] int * Value);
233     [id(405), propput] HRESULT ToolBar([in] int Value);
234     [id(406), propget] HRESULT MenuBar([out, retval] VARIANT_BOOL *Value);
235     [id(406), propput] HRESULT MenuBar([in] VARIANT_BOOL Value);
236     [id(407), propget] HRESULT FullScreen([out, retval] VARIANT_BOOL *pbFullScreen);
237     [id(407), propput] HRESULT FullScreen([in] VARIANT_BOOL bFullScreen);
238 }
239
240 /*****************************************************************************
241  * IWebBrowser2 interface
242  */
243 [
244     object,
245     oleautomation,
246     uuid(d30c1661-cdaf-11d0-8a3e-00c04fc9e26e),
247     hidden,
248     dual
249 ]
250 interface IWebBrowser2 : IWebBrowserApp
251 {
252     [id(500)] HRESULT Navigate2(
253         [in] VARIANT *URL,
254         [in, optional] VARIANT *Flags,
255         [in, optional] VARIANT *TargetFrameName,
256         [in, optional] VARIANT *PostData,
257         [in, optional] VARIANT *Headers);
258
259     [id(501)] HRESULT QueryStatusWB(
260         [in] OLECMDID cmdID,
261         [out, retval] OLECMDF *pcmdf);
262
263     [id(502)] HRESULT ExecWB(
264         [in] OLECMDID cmdID,
265         [in] OLECMDEXECOPT cmdexecopt,
266         [in, optional] VARIANT *pvaIn,
267         [out, in, optional] VARIANT *pvaOut);
268
269     [id(503)] HRESULT ShowBrowserBar(
270         [in] VARIANT *pvaClsid,
271         [in, optional] VARIANT *pvarShow,
272         [in, optional] VARIANT *pvarSize);
273
274     [id(DISPID_READYSTATE), propget, bindable]
275     HRESULT ReadyState([out, retval] READYSTATE *plReadyState);
276
277     [id(550), propget] HRESULT Offline([out, retval] VARIANT_BOOL *pbOffline);
278     [id(550), propput] HRESULT Offline([in] VARIANT_BOOL bOffline);
279     [id(551), propget] HRESULT Silent([out, retval] VARIANT_BOOL *pbSilent);
280     [id(551), propput] HRESULT Silent([in] VARIANT_BOOL bSilent);
281     [id(552), propget] HRESULT RegisterAsBrowser([out, retval] VARIANT_BOOL *pbRegister);
282     [id(552), propput] HRESULT RegisterAsBrowser([in] VARIANT_BOOL bRegister);
283     [id(553), propget] HRESULT RegisterAsDropTarget([out, retval] VARIANT_BOOL *pbRegister);
284     [id(553), propput] HRESULT RegisterAsDropTarget([in] VARIANT_BOOL bRegister);
285     [id(554), propget] HRESULT TheaterMode([out, retval] VARIANT_BOOL *pbRegister);
286     [id(554), propput] HRESULT TheaterMode([in] VARIANT_BOOL bRegister);
287     [id(555), propget] HRESULT AddressBar([out, retval] VARIANT_BOOL *Value);
288     [id(555), propput] HRESULT AddressBar([in] VARIANT_BOOL Value);
289     [id(556), propget] HRESULT Resizable([out, retval] VARIANT_BOOL *Value);
290     [id(556), propput] HRESULT Resizable([in] VARIANT_BOOL Value);
291 }
292
293 typedef
294 [
295     uuid(65507be0-91a8-11d3-a845-009027220e6d)
296 ]
297 enum SecureLockIconConstants {
298     secureLockIconUnsecure          = 0,
299     secureLockIconMixed             = 1,
300     secureLockIconSecureUnknownBits = 2,
301     secureLockIconSecure40Bit       = 3,
302     secureLockIconSecure56Bit       = 4,
303     secureLockIconSecureFortezza    = 5,
304     secureLockIconSecure128Bit      = 6
305 } SecureLockIconConstants;
306
307 /*****************************************************************************
308  * DWebBrowserEvents2 dispinterface
309  */
310 [
311     uuid(34a715a0-6587-11d0-924a-0020afc7ac4d),
312     hidden
313 ]
314 dispinterface DWebBrowserEvents2
315 {
316     properties:
317     methods:
318     [id(DISPID_STATUSTEXTCHANGE)]
319     void StatusTextChange([in] BSTR Text);
320
321     [id(DISPID_PROGRESSCHANGE)]
322     void ProgressChange([in] long Progress, [in] long ProgressMax);
323
324     [id(DISPID_COMMANDSTATECHANGE)]
325     void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable);
326
327     [id(DISPID_DOWNLOADBEGIN)]
328     void DownloadBegin();
329
330     [id(DISPID_DOWNLOADCOMPLETE)]
331     void DownloadComplete();
332
333     [id(DISPID_TITLECHANGE)]
334     void TitleChange([in] BSTR Text);
335
336     [id(DISPID_PROPERTYCHANGE)]
337     void PropertyChange([in] BSTR szProperty);
338
339     [id(DISPID_BEFORENAVIGATE2)]
340     void BeforeNavigate2(
341         [in] IDispatch *pDisp,
342         [in] VARIANT *URL,
343         [in] VARIANT *Flags,
344         [in] VARIANT *TargetFrameName,
345         [in] VARIANT *PostData,
346         [in] VARIANT *Headers,
347         [in, out] VARIANT_BOOL *Cancel);
348
349     [id(DISPID_NEWWINDOW2)]
350     void NewWindow2([in, out] IDispatch **ppDisp, [in, out] VARIANT_BOOL *Cancel);
351
352     [id(DISPID_NAVIGATECOMPLETE2)]
353     void NavigateComplete2([in] IDispatch *pDisp, [in] VARIANT *URL);
354
355     [id(DISPID_DOCUMENTCOMPLETE)]
356     void DocumentComplete([in] IDispatch *pDisp, [in] VARIANT *URL);
357
358     [id(DISPID_ONQUIT)]
359     void OnQuit();
360
361     [id(DISPID_ONVISIBLE)]
362     void OnVisible([in] VARIANT_BOOL Visible);
363
364     [id(DISPID_ONTOOLBAR)]
365     void OnToolBar([in] VARIANT_BOOL ToolBar);
366
367     [id(DISPID_ONMENUBAR)]
368     void OnMenuBar([in] VARIANT_BOOL MenuBar);
369
370     [id(DISPID_ONSTATUSBAR)]
371     void OnStatusBar([in] VARIANT_BOOL StatusBar);
372
373     [id(DISPID_ONFULLSCREEN)]
374     void OnFullScreen([in] VARIANT_BOOL FullScreen);
375
376     [id(DISPID_ONTHEATERMODE)]
377     void OnTheaterMode([in] VARIANT_BOOL TheaterMode);
378
379     [id(DISPID_WINDOWSETRESIZABLE)]
380     void WindowSetResizable([in] VARIANT_BOOL Resizable);
381
382     [id(DISPID_WINDOWSETLEFT)]
383     void WindowSetLeft([in] long Left);
384
385     [id(DISPID_WINDOWSETTOP)]
386     void WindowSetTop([in] long Top);
387
388     [id(DISPID_WINDOWSETWIDTH)]
389     void WindowSetWidth([in] long Width);
390
391     [id(DISPID_WINDOWSETHEIGHT)]
392     void WindowSetHeight([in] long Height);
393
394     [id(DISPID_WINDOWCLOSING)]
395     void WindowClosing(
396             [in] VARIANT_BOOL IsChildWindow,
397             [in, out] VARIANT_BOOL *Cancel);
398
399     [id(DISPID_CLIENTTOHOSTWINDOW)]
400     void ClientToHostWindow(
401             [in, out] long *CX,
402             [in, out] long *CY);
403
404     [id(DISPID_SETSECURELOCKICON)]
405     void SetSecureLockIcon([in] long SecureLockIcon);
406
407     [id(DISPID_FILEDOWNLOAD)]
408     void FileDownload([in, out] VARIANT_BOOL* Cancel);
409
410     [id(DISPID_NAVIGATEERROR)]
411     void NavigateError(
412             [in] IDispatch *pDisp,
413             [in] VARIANT *URL,
414             [in] VARIANT *Frame,
415             [in] VARIANT *StatusCode,
416             [in, out] VARIANT_BOOL *Cancel);
417
418     [id(DISPID_PRINTTEMPLATEINSTANTIATION)]
419     void PrintTemplateInstantiation([in] IDispatch *pDisp);
420
421     [id(DISPID_PRINTTEMPLATETEARDOWN)]
422     void PrintTemplateTeardown([in] IDispatch *pDisp);
423
424     [id(DISPID_UPDATEPAGESTATUS)]
425     void UpdatePageStatus(
426             [in] IDispatch *pDisp,
427             [in] VARIANT *nPage,
428             [in] VARIANT *fDone);
429
430     [id(DISPID_PRIVACYIMPACTEDSTATECHANGE)]
431     void PrivacyImpactedStateChange([in] VARIANT_BOOL bImpacted);
432 }
433
434 [
435     uuid(eab22ac3-30c1-11cf-a7eb-0000c05bae0b),
436     control
437 ]
438 coclass WebBrowser_V1
439 {
440     interface IWebBrowser2;
441     [default] interface IWebBrowser;
442     [source] dispinterface DWebBrowserEvents2;
443     [default, source] dispinterface DWebBrowserEvents;
444 }
445
446 [
447     uuid(8856f961-340a-11d0-a96b-00c04fd705a2),
448     control
449 ]
450 coclass WebBrowser
451 {
452     [default] interface IWebBrowser2;
453     interface IWebBrowser;
454     [default, source] dispinterface DWebBrowserEvents2;
455     [source] dispinterface DWebBrowserEvents;
456 }
457
458 [
459     uuid(0002df01-0000-0000-c000-000000000046)
460 ]
461 coclass InternetExplorer
462 {
463     [default] interface IWebBrowser2;
464               interface IWebBrowserApp;
465     [default, source] dispinterface DWebBrowserEvents2;
466     [source]          dispinterface DWebBrowserEvents;
467 }
468
469 [
470     uuid(C08AFD90-F2A1-11D1-8455-00A0C91F3880),
471     hidden
472 ]
473 coclass ShellBrowserWindow
474 {
475     [default] interface IWebBrowser2;
476     interface IWebBrowserApp;
477     [default, source] dispinterface DWebBrowserEvents2;
478     [source] dispinterface DWebBrowserEvents;
479 }
480
481 typedef
482 [
483     uuid(f41e6981-28e5-11d0-82b4-00a0c90c29c5)
484 ]
485 enum ShellWindowTypeConstants {
486     SWC_EXPLORER = 0,
487     SWC_BROWSER  = 1,
488     SWC_3RDPARTY = 2,
489     SWC_CALLBACK = 4
490 } ShellWindowTypeConstants;
491
492 typedef
493 [
494     uuid(7716a370-38Ca-11d0-a48B-00a0c90a8f39)
495 ]
496 enum ShellWindowFindWindowOptions {
497     SWFO_NEEDDISPATCH   = 1,
498     SWFO_INCLUDEPENDING = 2,
499     SWFO_COOKIEPASSED   = 4
500 } ShellWindowFindWindowOptions;
501
502 [
503     uuid(FE4106E0-399A-11D0-A48C-00A0C90A8F39)
504 ]
505 dispinterface DShellWindowsEvents {
506     properties:
507     methods:
508     [id(DISPID_WINDOWREGISTERED)]
509     void WindowRegistered([in] long lCookie);
510
511     [id(DISPID_WINDOWREVOKED)]
512     void WindowRevoked([in] long lCookie);
513 }
514
515 [
516     object,
517     oleautomation,
518     uuid(85cb6900-4d95-11cf-960c-0080c7f4ee85),
519     dual
520 ]
521 interface IShellWindows : IDispatch
522 {
523     [propget] HRESULT Count([out, retval] long *Count);
524
525     [id(0)] HRESULT Item(
526             [in, optional] VARIANT index,
527             [out, retval] IDispatch **Folder);
528
529     [id(-4)] HRESULT _NewEnum([out, retval] IUnknown **ppunk);
530
531     [hidden] HRESULT Register(
532             [in] IDispatch *pid,
533             [in] long hWnd,
534             [in] int swClass,
535             [out] long *plCookie);
536
537     [hidden] HRESULT RegisterPending(
538             [in] long lThreadId,
539             [in] VARIANT *pvarloc,
540             [in] VARIANT *pvarlocRoot,
541             [in] int swClass,
542             [out] long *plCookie);
543
544     [hidden] HRESULT Revoke([in] long lCookie);
545     [hidden] HRESULT OnNavigate([in] long lCookie, [in] VARIANT *pvarLoc);
546     [hidden] HRESULT OnActivated([in] long lCookie, [in] VARIANT_BOOL fActive);
547     [hidden] HRESULT FindWindowSW(
548             [in] VARIANT *pvarLoc,
549             [in] VARIANT *pvarLocRoot,
550             [in] int swClass,
551             [out] long *phwnd,
552             [in] int swfwOptions,
553             [out, retval] IDispatch **ppdispOut);
554
555     [hidden] HRESULT OnCreated([in] long lCookie, [in] IUnknown *punk);
556     [hidden] HRESULT ProcessAttachDetach([in] VARIANT_BOOL fAttach);
557 }
558
559 [
560     uuid(9ba05972-f6a8-11cf-a442-00a0c90a8f39)
561 ]
562 coclass ShellWindows
563 {
564     [default] interface IShellWindows;
565     [default, source] dispinterface DShellWindowsEvents;
566 }
567
568 [
569     odl,
570     uuid(729fe2f8-1ea8-11d1-8f85-00C04fc2fbe1),
571     dual,
572     oleautomation
573 ]
574 interface IShellUIHelper : IDispatch {
575     [id(1), hidden] HRESULT ResetFirstBootMode();
576     [id(2), hidden] HRESULT ResetSafeMode();
577     [id(3), hidden] HRESULT RefreshOfflineDesktop();
578
579     [id(4)] HRESULT AddFavorite(
580             [in] BSTR URL,
581             [in, optional] VARIANT* Title);
582
583     [id(5)] HRESULT AddChannel([in] BSTR URL);
584
585     [id(6)] HRESULT AddDesktopComponent(
586             [in] BSTR URL,
587             [in] BSTR Type,
588             [in, optional] VARIANT *Left,
589             [in, optional] VARIANT *Top,
590             [in, optional] VARIANT *Width,
591             [in, optional] VARIANT *Height);
592
593     [id(7)] HRESULT IsSubscribed(
594             [in] BSTR URL,
595             [out, retval] VARIANT_BOOL *pBool);
596
597     [id(8)] HRESULT NavigateAndFind(
598             [in] BSTR URL,
599             [in] BSTR strQuery,
600             [in] VARIANT *varTargetFrame);
601
602     [id(9)] HRESULT ImportExportFavorites(
603             [in] VARIANT_BOOL fImport,
604             [in] BSTR strImpExpPath);
605
606     [id(10)] HRESULT AutoCompleteSaveForm([in, optional] VARIANT *Form);
607
608     [id(11)] HRESULT AutoScan(
609             [in] BSTR strSearch,
610             [in] BSTR strFailureUrl,
611             [in, optional] VARIANT *pvarTargetFrame);
612
613     [id(12), hidden] HRESULT AutoCompleteAttach([in, optional] VARIANT *Reserved);
614
615     [id(13)] HRESULT ShowBrowserUI(
616             [in] BSTR bstrName,
617             [in] VARIANT *pvarIn,
618             [out, retval] VARIANT *pvarOut);
619 }
620
621 [
622     uuid(64ab4bb7-111e-11d1-8f79-00c04fc2fbe1)
623 ]
624 coclass ShellUIHelper {
625     [default] interface IShellUIHelper;
626 }
627
628 [
629     uuid(55136806-b2de-11d1-b9f2-00a0c98bc547)
630 ]
631 dispinterface DShellNameSpaceEvents {
632     properties:
633     methods:
634     [id(1)] void FavoritesSelectionChange(
635             [in] long cItems,
636             [in] long hItem,
637             [in] BSTR strName,
638             [in] BSTR strUrl,
639             [in] long cVisits,
640             [in] BSTR strDate,
641             [in] long fAvailableOffline);
642
643     [id(2)] void SelectionChange();
644     [id(3)] void DoubleClick();
645     [id(4)] void Initialized();
646 }
647
648 [
649     odl,
650     uuid(55136804-b2de-11d1-b9f2-00a0c98bc547),
651     hidden,
652     dual,
653     oleautomation
654 ]
655 interface IShellFavoritesNameSpace : IDispatch {
656     [id(1)] HRESULT MoveSelectionUp();
657     [id(2)] HRESULT MoveSelectionDown();
658     [id(3)] HRESULT ResetSort();
659     [id(4)] HRESULT NewFolder();
660     [id(5)] HRESULT Synchronize();
661     [id(6)] HRESULT Import();
662     [id(7)] HRESULT Export();
663     [id(8)] HRESULT InvokeContextMenuCommand([in] BSTR strCommand);
664     [id(9)] HRESULT MoveSelectionTo();
665     [id(10), propget] HRESULT SubscriptionsEnabled([out, retval] VARIANT_BOOL *pBool);
666     [id(11)] HRESULT CreateSubscriptionForSelection([out, retval] VARIANT_BOOL *pBool);
667     [id(12)] HRESULT DeleteSubscriptionForSelection([out, retval] VARIANT_BOOL *pBool);
668     [id(13)] HRESULT SetRoot([in] BSTR bstrFullPath);
669 }
670
671 [
672     odl,
673     uuid(e572d3c9-37be-4ae2-825d-d521763e3108),
674     hidden,
675     dual,
676     oleautomation
677 ]
678 interface IShellNameSpace : IShellFavoritesNameSpace {
679     [id(14), propget] HRESULT EnumOptions([out, retval] long* pgrfEnumFlags);
680     [id(14), propput] HRESULT EnumOptions([in] long pgrfEnumFlags);
681
682     [id(15), propget] HRESULT SelectedItem([out, retval] IDispatch **pItem);
683     [id(15), propput] HRESULT SelectedItem([in] IDispatch *pItem);
684
685     [id(16), propget] HRESULT Root([out, retval] VARIANT *pvar);
686     [id(16), propput] HRESULT Root([in] VARIANT pvar);
687
688     [id(17), propget] HRESULT Depth([out, retval] int *piDepth);
689     [id(17), propput] HRESULT Depth([in] int piDepth);
690
691     [id(18), propget] HRESULT Mode([out, retval] unsigned int *puMode);
692     [id(18), propput] HRESULT Mode([in] unsigned int puMode);
693
694     [id(19), propget] HRESULT Flags([out, retval] unsigned long *pdwFlags);
695     [id(19), propput] HRESULT Flags([in] unsigned long pdwFlags);
696
697     [id(20), propput] HRESULT TVFlags([in] unsigned long dwFlags);
698     [id(20), propget] HRESULT TVFlags([out, retval] unsigned long *dwFlags);
699
700     [id(21), propget] HRESULT Columns([out, retval] BSTR *bstrColumns);
701     [id(21), propput] HRESULT Columns([in] BSTR bstrColumns);
702
703     [id(22), propget] HRESULT CountViewTypes([out, retval] int *piTypes);
704
705     [id(23)] HRESULT SetViewType([in] int iType);
706     [id(24)] HRESULT SelectedItems([out, retval] IDispatch **ppid);
707     [id(25)] HRESULT Expand([in] VARIANT var,  int iDepth);
708     [id(26)] HRESULT UnselectAll();
709 }
710
711 [
712     uuid(55136805-b2de-11d1-b9f2-00a0c98bc547)
713 ]
714 coclass ShellNameSpace {
715     [default] interface IShellNameSpace;
716     [default, source] dispinterface DShellNameSpaceEvents;
717 }
718
719 [
720     uuid(2f2f1f96-2bc1-4b1c-be28-ea3774f4676a)
721 ]
722 coclass ShellShellNameSpace {
723     [default] interface IShellNameSpace;
724     [default, source] dispinterface DShellNameSpaceEvents;
725 }
726
727 [
728     odl,
729     uuid(f3470f24-15fd-11d2-bb2e-00805ff7efca),
730     hidden,
731     dual,
732     oleautomation
733 ]
734 interface IScriptErrorList : IDispatch {
735     [id(10)] HRESULT advanceError();
736     [id(11)] HRESULT retreatError();
737     [id(12)] HRESULT canAdvanceError([out, retval] long *pfCanAdvance);
738     [id(13)] HRESULT canRetreatError([out, retval] long *pfCanRetreat);
739     [id(14)] HRESULT getErrorLine([out, retval] long *plLine);
740     [id(15)] HRESULT getErrorChar([out, retval] long *plChar);
741     [id(16)] HRESULT getErrorCode([out, retval] long *plCode);
742     [id(17)] HRESULT getErrorMsg([out, retval] BSTR *pstr);
743     [id(18)] HRESULT getErrorUrl([out, retval] BSTR *pstr);
744     [id(23)] HRESULT getAlwaysShowLockState([out, retval] long *pfAlwaysShowLocked);
745     [id(19)] HRESULT getDetailsPaneOpen([out, retval] long *pfDetailsPaneOpen);
746     [id(20)] HRESULT setDetailsPaneOpen(long fDetailsPaneOpen);
747     [id(21)] HRESULT getPerErrorDisplay([out, retval] long *pfPerErrorDisplay);
748     [id(22)] HRESULT setPerErrorDisplay(long fPerErrorDisplay);
749 }
750
751 [
752     uuid(efd01300-160f-11d2-bb2e-00805ff7efca),
753     hidden
754 ]
755 coclass CScriptErrorList {
756     [default] interface IScriptErrorList;
757 }
758
759 [
760     odl,
761     uuid(ba9239a4-3dd5-11d2-bf8b-00c04fb93661),
762     hidden,
763     dual,
764     oleautomation
765 ]
766 interface ISearch : IDispatch {
767     [propget] HRESULT Title([out, retval] BSTR *pbstrTitle);
768     [propget] HRESULT Id([out, retval] BSTR *pbstrId);
769     [propget] HRESULT URL([out, retval] BSTR *pbstrUrl);
770 }
771
772 [
773     odl,
774     uuid(47c922a2-3dd5-11d2-bf8b-00c04fb93661),
775     hidden,
776     dual,
777     oleautomation
778 ]
779 interface ISearches : IDispatch {
780     [propget] HRESULT Count([out, retval] long *plCount);
781     [propget] HRESULT Default([out, retval] BSTR *pbstrDefault);
782
783     HRESULT Item(
784             [in, optional] VARIANT index,
785             [out, retval] ISearch **ppid);
786
787     [id(-4)] HRESULT _NewEnum([out, retval] IUnknown **ppunk);
788 }
789
790 [
791     odl,
792     uuid(72423e8f-8011-11d2-be79-00a0c9a83da1),
793     hidden,
794     dual,
795     oleautomation
796 ]
797 interface ISearchAssistantOC : IDispatch {
798     [id(1)] HRESULT AddNextMenuItem([in] BSTR bstrText, [in] long idItem);
799     [id(2)] HRESULT SetDefaultSearchUrl([in] BSTR bstrUrl);
800     [id(3)] HRESULT NavigateToDefaultSearch();
801
802     [id(4)] HRESULT IsRestricted(
803             [in] BSTR bstrGuid,
804             [out, retval] VARIANT_BOOL *pVal);
805
806     [id(5), propget] HRESULT ShellFeaturesEnabled([out, retval] VARIANT_BOOL *pVal);
807     [id(6), propget] HRESULT SearchAssistantDefault([out, retval] VARIANT_BOOL *pVal);
808     [id(7), propget] HRESULT Searches([out, retval] ISearches **ppid);
809     [id(8), propget] HRESULT InWebFolder([out, retval] VARIANT_BOOL *pVal);
810
811     [id(9)] HRESULT PutProperty(
812             [in] VARIANT_BOOL bPerLocale,
813             [in] BSTR bstrName,
814             [in] BSTR bstrValue);
815
816     [id(10)] HRESULT GetProperty(
817             [in] VARIANT_BOOL bPerLocale,
818             [in] BSTR bstrName,
819             [out, retval] BSTR *pbstrValue);
820
821     [id(11), propput] HRESULT EventHandled([in] VARIANT_BOOL rhs);
822     [id(12)] HRESULT ResetNextMenu();
823     [id(13)] HRESULT FindOnWeb();
824     [id(14)] HRESULT FindFilesOrFolders();
825     [id(15)] HRESULT FindComputer();
826     [id(16)] HRESULT FindPrinter();
827     [id(17)] HRESULT FindPeople();
828
829     [id(18)] HRESULT GetSearchAssistantURL(
830             [in] VARIANT_BOOL bSubstitute,
831             [in] VARIANT_BOOL bCustomize,
832             [out, retval] BSTR *pbstrValue);
833
834     [id(19)] HRESULT NotifySearchSettingsChanged();
835
836     [id(20), propput] HRESULT ASProvider([in] BSTR pProvider);
837     [id(20), propget] HRESULT ASProvider([out, retval] BSTR *pProvider);
838
839     [id(21), propput] HRESULT ASSetting([in] int pSetting);
840     [id(21), propget] HRESULT ASSetting([out, retval] int *pSetting);
841
842     [id(22)] HRESULT NETDetectNextNavigate();
843     [id(23)] HRESULT PutFindText([in] BSTR FindText);
844     [id(24), propget] HRESULT Version([out, retval] int *pVersion);
845
846     [id(25)] HRESULT EncodeString(
847             [in] BSTR bstrValue,
848             [in] BSTR bstrCharSet,
849             [in] VARIANT_BOOL bUseUTF8,
850             [out, retval] BSTR* pbstrResult);
851 }
852
853 [
854     odl,
855     uuid(72423e8f-8011-11d2-be79-00a0c9a83da2),
856     hidden,
857     dual,
858     oleautomation
859 ]
860 interface ISearchAssistantOC2 : ISearchAssistantOC {
861     [id(26), propget] HRESULT ShowFindPrinter([out, retval] VARIANT_BOOL *pbShowFindPrinter);
862 }
863
864 [
865     odl,
866     uuid(72423e8f-8011-11d2-be79-00a0c9a83da3),
867     hidden,
868     dual,
869     oleautomation
870 ]
871 interface ISearchAssistantOC3 : ISearchAssistantOC2 {
872     [id(27), propget] HRESULT SearchCompanionAvailable([out, retval] VARIANT_BOOL *pbAvailable);
873
874     [id(28), propput] HRESULT UseSearchCompanion([in] VARIANT_BOOL pbUseSC);
875     [id(28), propget] HRESULT UseSearchCompanion([out, retval] VARIANT_BOOL *pbUseSC);
876 }
877
878 [
879     uuid(1611fdda-445b-11d2-85de-00C04fa35c89),
880     hidden
881 ]
882 dispinterface _SearchAssistantEvents {
883     properties:
884     methods:
885     [id(1)] void OnNextMenuSelect([in] long idItem);
886     [id(2)] void OnNewSearch();
887 }
888
889 [
890     uuid(b45ff030-4447-11d2-85de-00C04fa35c89),
891     hidden
892 ]
893 coclass SearchAssistantOC {
894     [default] interface ISearchAssistantOC3;
895     [default, source] dispinterface _SearchAssistantEvents;
896 }
897
898 [
899     uuid(2e71fd0f-aab1-42c0-9146-6d2c4edcf07d),
900     hidden
901 ]
902 coclass ShellSearchAssistantOC {
903     [default] interface ISearchAssistantOC3;
904     [default, source] dispinterface _SearchAssistantEvents;
905 }
906
907 } /* library */