// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: shdocvw.dll

[
  uuid(EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B),
  version(1.1),
  helpstring("Microsoft Internet Controls")
]
library SHDocVw
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface IWebBrowser;
    dispinterface DWebBrowserEvents;
    interface IWebBrowserApp;
    interface IWebBrowser2;
    dispinterface DWebBrowserEvents2;
    dispinterface DShellWindowsEvents;
    interface IShellWindows;
    interface IShellUIHelper;
    dispinterface DShellNameSpaceEvents;
    interface IShellFavoritesNameSpace;
    interface IShellNameSpace;
    interface IScriptErrorList;
    interface ISearch;
    interface ISearches;
    interface ISearchAssistantOC;
    interface ISearchAssistantOC2;
    interface ISearchAssistantOC3;
    dispinterface _SearchAssistantEvents;

    [
      odl,
      uuid(EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B),
      helpstring("Web Browser interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface IWebBrowser : IDispatch {
        [id(0x00000064), helpstring("Navigates to the previous item in the history list.")]
        HRESULT GoBack();
        [id(0x00000065), helpstring("Navigates to the next item in the history list.")]
        HRESULT GoForward();
        [id(0x00000066), helpstring("Go home/start page.")]
        HRESULT GoHome();
        [id(0x00000067), helpstring("Go Search Page.")]
        HRESULT GoSearch();
        [id(0x00000068), helpstring("Navigates to a URL or file.")]
        HRESULT Navigate(
                        [in] BSTR URL, 
                        [in, optional] VARIANT* Flags, 
                        [in, optional] VARIANT* TargetFrameName, 
                        [in, optional] VARIANT* PostData, 
                        [in, optional] VARIANT* Headers);
        [id(0xfffffdda), helpstring("Refresh the currently viewed page.")]
        HRESULT Refresh();
        [id(0x00000069), helpstring("Refresh the currently viewed page.")]
        HRESULT Refresh2([in, optional] VARIANT* Level);
        [id(0x0000006a), helpstring("Stops opening a file.")]
        HRESULT Stop();
        [id(0x000000c8), propget, helpstring("Returns the application automation object if accessible, this automation object otherwise..")]
        HRESULT Application([out, retval] IDispatch** ppDisp);
        [id(0x000000c9), propget, helpstring("Returns the automation object of the container/parent if one exists or this automation object.")]
        HRESULT Parent([out, retval] IDispatch** ppDisp);
        [id(0x000000ca), propget, helpstring("Returns the container/parent automation object, if any.")]
        HRESULT Container([out, retval] IDispatch** ppDisp);
        [id(0x000000cb), propget, helpstring("Returns the active Document automation object, if any.")]
        HRESULT Document([out, retval] IDispatch** ppDisp);
        [id(0x000000cc), propget, helpstring("Returns True if this is the top level object.")]
        HRESULT TopLevelContainer([out, retval] VARIANT_BOOL* pBool);
        [id(0x000000cd), propget, helpstring("Returns the type of the contained document object.")]
        HRESULT Type([out, retval] BSTR* Type);
        [id(0x000000ce), propget, helpstring("The horizontal position (pixels) of the frame window relative to the screen/container.")]
        HRESULT Left([out, retval] long* pl);
        [id(0x000000ce), propput, helpstring("The horizontal position (pixels) of the frame window relative to the screen/container.")]
        HRESULT Left([in] long pl);
        [id(0x000000cf), propget, helpstring("The vertical position (pixels) of the frame window relative to the screen/container.")]
        HRESULT Top([out, retval] long* pl);
        [id(0x000000cf), propput, helpstring("The vertical position (pixels) of the frame window relative to the screen/container.")]
        HRESULT Top([in] long pl);
        [id(0x000000d0), propget, helpstring("The horizontal dimension (pixels) of the frame window/object.")]
        HRESULT Width([out, retval] long* pl);
        [id(0x000000d0), propput, helpstring("The horizontal dimension (pixels) of the frame window/object.")]
        HRESULT Width([in] long pl);
        [id(0x000000d1), propget, helpstring("The vertical dimension (pixels) of the frame window/object.")]
        HRESULT Height([out, retval] long* pl);
        [id(0x000000d1), propput, helpstring("The vertical dimension (pixels) of the frame window/object.")]
        HRESULT Height([in] long pl);
        [id(0x000000d2), propget, helpstring("Gets the short (UI-friendly) name of the URL/file currently viewed.")]
        HRESULT LocationName([out, retval] BSTR* LocationName);
        [id(0x000000d3), propget, helpstring("Gets the full URL/path currently viewed.")]
        HRESULT LocationURL([out, retval] BSTR* LocationURL);
        [id(0x000000d4), propget, helpstring("Query to see if something is still in progress.")]
        HRESULT Busy([out, retval] VARIANT_BOOL* pBool);
    };

    [
      uuid(EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B),
      helpstring("Web Browser Control Events (old)"),
      hidden
    ]
    dispinterface DWebBrowserEvents {
        properties:
        methods:
            [id(0x00000064), helpstring("Fired when a new hyperlink is being navigated to.")]
            void BeforeNavigate(
                            [in] BSTR URL, 
                            long Flags, 
                            BSTR TargetFrameName, 
                            VARIANT* PostData, 
                            BSTR Headers, 
                            [in, out] VARIANT_BOOL* Cancel);
            [id(0x00000065), helpstring("Fired when the document being navigated to becomes visible and enters the navigation stack.")]
            void NavigateComplete([in] BSTR URL);
            [id(0x00000066), helpstring("Statusbar text changed.")]
            void StatusTextChange([in] BSTR Text);
            [id(0x0000006c), helpstring("Fired when download progress is updated.")]
            void ProgressChange(
                            [in] long Progress, 
                            [in] long ProgressMax);
            [id(0x00000068), helpstring("Download of page complete.")]
            void DownloadComplete();
            [id(0x00000069), helpstring("The enabled state of a command changed")]
            void CommandStateChange(
                            [in] long Command, 
                            [in] VARIANT_BOOL Enable);
            [id(0x0000006a), helpstring("Download of a page started.")]
            void DownloadBegin();
            [id(0x0000006b), helpstring("Fired when a new window should be created.")]
            void NewWindow(
                            [in] BSTR URL, 
                            [in] long Flags, 
                            [in] BSTR TargetFrameName, 
                            [in] VARIANT* PostData, 
                            [in] BSTR Headers, 
                            [in, out] VARIANT_BOOL* Processed);
            [id(0x00000071), helpstring("Document title changed.")]
            void TitleChange([in] BSTR Text);
            [id(0x000000c8), helpstring("Fired when a new hyperlink is being navigated to in a frame.")]
            void FrameBeforeNavigate(
                            [in] BSTR URL, 
                            long Flags, 
                            BSTR TargetFrameName, 
                            VARIANT* PostData, 
                            BSTR Headers, 
                            [in, out] VARIANT_BOOL* Cancel);
            [id(0x000000c9), helpstring("Fired when a new hyperlink is being navigated to in a frame.")]
            void FrameNavigateComplete([in] BSTR URL);
            [id(0x000000cc), helpstring("Fired when a new window should be created.")]
            void FrameNewWindow(
                            [in] BSTR URL, 
                            [in] long Flags, 
                            [in] BSTR TargetFrameName, 
                            [in] VARIANT* PostData, 
                            [in] BSTR Headers, 
                            [in, out] VARIANT_BOOL* Processed);
            [id(0x00000067), helpstring("Fired when application is quiting.")]
            void Quit([in, out] VARIANT_BOOL* Cancel);
            [id(0x0000006d), helpstring("Fired when window has been moved.")]
            void WindowMove();
            [id(0x0000006e), helpstring("Fired when window has been sized.")]
            void WindowResize();
            [id(0x0000006f), helpstring("Fired when window has been activated.")]
            void WindowActivate();
            [id(0x00000070), helpstring("Fired when the PutProperty method has been called.")]
            void PropertyChange([in] BSTR Property);
    };

    typedef [uuid(34A226E0-DF30-11CF-89A9-00A0C9054129), helpstring("Constants for WebBrowser CommandStateChange")]
    enum {
        CSC_UPDATECOMMANDS = 0xffffffff,
        CSC_NAVIGATEFORWARD = 1,
        CSC_NAVIGATEBACK = 2
    } CommandStateChangeConstants;

    [
      odl,
      uuid(0002DF05-0000-0000-C000-000000000046),
      helpstring("Web Browser Application Interface."),
      hidden,
      dual,
      oleautomation
    ]
    interface IWebBrowserApp : IWebBrowser {
        [id(0x0000012c), helpstring("Exits application and closes the open document.")]
        HRESULT Quit();
        [id(0x0000012d), helpstring("Converts client sizes into window sizes.")]
        HRESULT ClientToWindow(
                        [in, out] int* pcx, 
                        [in, out] int* pcy);
        [id(0x0000012e), helpstring("Associates vtValue with the name szProperty in the context of the object.")]
        HRESULT PutProperty(
                        [in] BSTR Property, 
                        [in] VARIANT vtValue);
        [id(0x0000012f), helpstring("Retrieve the Associated value for the property vtValue in the context of the object.")]
        HRESULT GetProperty(
                        [in] BSTR Property, 
                        [out, retval] VARIANT* pvtValue);
        [id(00000000), propget, helpstring("Returns name of the application.")]
        HRESULT Name([out, retval] BSTR* Name);
        [id(0xfffffdfd), propget, helpstring("Returns the HWND of the current IE window.")]
        HRESULT HWND([out, retval] long* pHWND);
        [id(0x00000190), propget, helpstring("Returns file specification of the application, including path.")]
        HRESULT FullName([out, retval] BSTR* FullName);
        [id(0x00000191), propget, helpstring("Returns the path to the application.")]
        HRESULT Path([out, retval] BSTR* Path);
        [id(0x00000192), propget, helpstring("Determines whether the application is visible or hidden.")]
        HRESULT Visible([out, retval] VARIANT_BOOL* pBool);
        [id(0x00000192), propput, helpstring("Determines whether the application is visible or hidden.")]
        HRESULT Visible([in] VARIANT_BOOL pBool);
        [id(0x00000193), propget, helpstring("Turn on or off the statusbar.")]
        HRESULT StatusBar([out, retval] VARIANT_BOOL* pBool);
        [id(0x00000193), propput, helpstring("Turn on or off the statusbar.")]
        HRESULT StatusBar([in] VARIANT_BOOL pBool);
        [id(0x00000194), propget, helpstring("Text of Status window.")]
        HRESULT StatusText([out, retval] BSTR* StatusText);
        [id(0x00000194), propput, helpstring("Text of Status window.")]
        HRESULT StatusText([in] BSTR StatusText);
        [id(0x00000195), propget, helpstring("Controls which toolbar is shown.")]
        HRESULT ToolBar([out, retval] int* Value);
        [id(0x00000195), propput, helpstring("Controls which toolbar is shown.")]
        HRESULT ToolBar([in] int Value);
        [id(0x00000196), propget, helpstring("Controls whether menubar is shown.")]
        HRESULT MenuBar([out, retval] VARIANT_BOOL* Value);
        [id(0x00000196), propput, helpstring("Controls whether menubar is shown.")]
        HRESULT MenuBar([in] VARIANT_BOOL Value);
        [id(0x00000197), propget, helpstring("Maximizes window and turns off statusbar, toolbar, menubar, and titlebar.")]
        HRESULT FullScreen([out, retval] VARIANT_BOOL* pbFullScreen);
        [id(0x00000197), propput, helpstring("Maximizes window and turns off statusbar, toolbar, menubar, and titlebar.")]
        HRESULT FullScreen([in] VARIANT_BOOL pbFullScreen);
    };

    [
      odl,
      uuid(D30C1661-CDAF-11D0-8A3E-00C04FC9E26E),
      helpstring("Web Browser Interface for IE4."),
      hidden,
      dual,
      oleautomation
    ]
    interface IWebBrowser2 : IWebBrowserApp {
        [id(0x000001f4), helpstring("Navigates to a URL or file or pidl.")]
        HRESULT Navigate2(
                        [in] VARIANT* URL, 
                        [in, optional] VARIANT* Flags, 
                        [in, optional] VARIANT* TargetFrameName, 
                        [in, optional] VARIANT* PostData, 
                        [in, optional] VARIANT* Headers);
        [id(0x000001f5), helpstring("IOleCommandTarget::QueryStatus")]
        HRESULT QueryStatusWB(
                        [in] OLECMDID cmdID, 
                        [out, retval] OLECMDF* pcmdf);
        [id(0x000001f6), helpstring("IOleCommandTarget::Exec")]
        HRESULT ExecWB(
                        [in] OLECMDID cmdID, 
                        [in] OLECMDEXECOPT cmdexecopt, 
                        [in, optional] VARIANT* pvaIn, 
                        [in, out, optional] VARIANT* pvaOut);
        [id(0x000001f7), helpstring("Set BrowserBar to Clsid")]
        HRESULT ShowBrowserBar(
                        [in] VARIANT* pvaClsid, 
                        [in, optional] VARIANT* pvarShow, 
                        [in, optional] VARIANT* pvarSize);
        [id(0xfffffdf3), propget, bindable]
        HRESULT ReadyState([out, retval] tagREADYSTATE* plReadyState);
        [id(0x00000226), propget, helpstring("Controls if the frame is offline (read from cache)")]
        HRESULT Offline([out, retval] VARIANT_BOOL* pbOffline);
        [id(0x00000226), propput, helpstring("Controls if the frame is offline (read from cache)")]
        HRESULT Offline([in] VARIANT_BOOL pbOffline);
        [id(0x00000227), propget, helpstring("Controls if any dialog boxes can be shown")]
        HRESULT Silent([out, retval] VARIANT_BOOL* pbSilent);
        [id(0x00000227), propput, helpstring("Controls if any dialog boxes can be shown")]
        HRESULT Silent([in] VARIANT_BOOL pbSilent);
        [id(0x00000228), propget, helpstring("Registers OC as a top-level browser (for target name resolution)")]
        HRESULT RegisterAsBrowser([out, retval] VARIANT_BOOL* pbRegister);
        [id(0x00000228), propput, helpstring("Registers OC as a top-level browser (for target name resolution)")]
        HRESULT RegisterAsBrowser([in] VARIANT_BOOL pbRegister);
        [id(0x00000229), propget, helpstring("Registers OC as a drop target for navigation")]
        HRESULT RegisterAsDropTarget([out, retval] VARIANT_BOOL* pbRegister);
        [id(0x00000229), propput, helpstring("Registers OC as a drop target for navigation")]
        HRESULT RegisterAsDropTarget([in] VARIANT_BOOL pbRegister);
        [id(0x0000022a), propget, helpstring("Controls if the browser is in theater mode")]
        HRESULT TheaterMode([out, retval] VARIANT_BOOL* pbRegister);
        [id(0x0000022a), propput, helpstring("Controls if the browser is in theater mode")]
        HRESULT TheaterMode([in] VARIANT_BOOL pbRegister);
        [id(0x0000022b), propget, helpstring("Controls whether address bar is shown")]
        HRESULT AddressBar([out, retval] VARIANT_BOOL* Value);
        [id(0x0000022b), propput, helpstring("Controls whether address bar is shown")]
        HRESULT AddressBar([in] VARIANT_BOOL Value);
        [id(0x0000022c), propget, helpstring("Controls whether the window is resizable")]
        HRESULT Resizable([out, retval] VARIANT_BOOL* Value);
        [id(0x0000022c), propput, helpstring("Controls whether the window is resizable")]
        HRESULT Resizable([in] VARIANT_BOOL Value);
    };

    typedef enum {
        OLECMDID_OPEN = 1,
        OLECMDID_NEW = 2,
        OLECMDID_SAVE = 3,
        OLECMDID_SAVEAS = 4,
        OLECMDID_SAVECOPYAS = 5,
        OLECMDID_PRINT = 6,
        OLECMDID_PRINTPREVIEW = 7,
        OLECMDID_PAGESETUP = 8,
        OLECMDID_SPELL = 9,
        OLECMDID_PROPERTIES = 10,
        OLECMDID_CUT = 11,
        OLECMDID_COPY = 12,
        OLECMDID_PASTE = 13,
        OLECMDID_PASTESPECIAL = 14,
        OLECMDID_UNDO = 15,
        OLECMDID_REDO = 16,
        OLECMDID_SELECTALL = 17,
        OLECMDID_CLEARSELECTION = 18,
        OLECMDID_ZOOM = 19,
        OLECMDID_GETZOOMRANGE = 20,
        OLECMDID_UPDATECOMMANDS = 21,
        OLECMDID_REFRESH = 22,
        OLECMDID_STOP = 23,
        OLECMDID_HIDETOOLBARS = 24,
        OLECMDID_SETPROGRESSMAX = 25,
        OLECMDID_SETPROGRESSPOS = 26,
        OLECMDID_SETPROGRESSTEXT = 27,
        OLECMDID_SETTITLE = 28,
        OLECMDID_SETDOWNLOADSTATE = 29,
        OLECMDID_STOPDOWNLOAD = 30,
        OLECMDID_ONTOOLBARACTIVATED = 31,
        OLECMDID_FIND = 32,
        OLECMDID_DELETE = 33,
        OLECMDID_HTTPEQUIV = 34,
        OLECMDID_HTTPEQUIV_DONE = 35,
        OLECMDID_ENABLE_INTERACTION = 36,
        OLECMDID_ONUNLOAD = 37,
        OLECMDID_PROPERTYBAG2 = 38,
        OLECMDID_PREREFRESH = 39,
        OLECMDID_SHOWSCRIPTERROR = 40,
        OLECMDID_SHOWMESSAGE = 41,
        OLECMDID_SHOWFIND = 42,
        OLECMDID_SHOWPAGESETUP = 43,
        OLECMDID_SHOWPRINT = 44,
        OLECMDID_CLOSE = 45,
        OLECMDID_ALLOWUILESSSAVEAS = 46,
        OLECMDID_DONTDOWNLOADCSS = 47,
        OLECMDID_UPDATEPAGESTATUS = 48,
        OLECMDID_PRINT2 = 49,
        OLECMDID_PRINTPREVIEW2 = 50,
        OLECMDID_SETPRINTTEMPLATE = 51,
        OLECMDID_GETPRINTTEMPLATE = 52
    } OLECMDID;

    typedef enum {
        OLECMDF_SUPPORTED = 1,
        OLECMDF_ENABLED = 2,
        OLECMDF_LATCHED = 4,
        OLECMDF_NINCHED = 8,
        OLECMDF_INVISIBLE = 16,
        OLECMDF_DEFHIDEONCTXTMENU = 32
    } OLECMDF;

    typedef enum {
        OLECMDEXECOPT_DODEFAULT = 0,
        OLECMDEXECOPT_PROMPTUSER = 1,
        OLECMDEXECOPT_DONTPROMPTUSER = 2,
        OLECMDEXECOPT_SHOWHELP = 3
    } OLECMDEXECOPT;

    typedef enum {
        READYSTATE_UNINITIALIZED = 0,
        READYSTATE_LOADING = 1,
        READYSTATE_LOADED = 2,
        READYSTATE_INTERACTIVE = 3,
        READYSTATE_COMPLETE = 4
    } tagREADYSTATE;

    typedef [uuid(65507BE0-91A8-11D3-A845-009027220E6D), helpstring("Constants for WebBrowser security icon notification")]
    enum {
        secureLockIconUnsecure = 0,
        secureLockIconMixed = 1,
        secureLockIconSecureUnknownBits = 2,
        secureLockIconSecure40Bit = 3,
        secureLockIconSecure56Bit = 4,
        secureLockIconSecureFortezza = 5,
        secureLockIconSecure128Bit = 6
    } SecureLockIconConstants;

    [
      uuid(34A715A0-6587-11D0-924A-0020AFC7AC4D),
      helpstring("Web Browser Control events interface"),
      hidden
    ]
    dispinterface DWebBrowserEvents2 {
        properties:
        methods:
            [id(0x00000066), helpstring("Statusbar text changed.")]
            void StatusTextChange([in] BSTR Text);
            [id(0x0000006c), helpstring("Fired when download progress is updated.")]
            void ProgressChange(
                            [in] long Progress, 
                            [in] long ProgressMax);
            [id(0x00000069), helpstring("The enabled state of a command changed.")]
            void CommandStateChange(
                            [in] long Command, 
                            [in] VARIANT_BOOL Enable);
            [id(0x0000006a), helpstring("Download of a page started.")]
            void DownloadBegin();
            [id(0x00000068), helpstring("Download of page complete.")]
            void DownloadComplete();
            [id(0x00000071), helpstring("Document title changed.")]
            void TitleChange([in] BSTR Text);
            [id(0x00000070), helpstring("Fired when the PutProperty method has been called.")]
            void PropertyChange([in] BSTR szProperty);
            [id(0x000000fa), helpstring("Fired before navigate occurs in the given WebBrowser (window or frameset element). The processing of this navigation may be modified.")]
            void BeforeNavigate2(
                            [in] IDispatch* pDisp, 
                            [in] VARIANT* URL, 
                            [in] VARIANT* Flags, 
                            [in] VARIANT* TargetFrameName, 
                            [in] VARIANT* PostData, 
                            [in] VARIANT* Headers, 
                            [in, out] VARIANT_BOOL* Cancel);
            [id(0x000000fb), helpstring("A new, hidden, non-navigated WebBrowser window is needed.")]
            void NewWindow2(
                            [in, out] IDispatch** ppDisp, 
                            [in, out] VARIANT_BOOL* Cancel);
            [id(0x000000fc), helpstring("Fired when the document being navigated to becomes visible and enters the navigation stack.")]
            void NavigateComplete2(
                            [in] IDispatch* pDisp, 
                            [in] VARIANT* URL);
            [id(0x00000103), helpstring("Fired when the document being navigated to reaches ReadyState_Complete.")]
            void DocumentComplete(
                            [in] IDispatch* pDisp, 
                            [in] VARIANT* URL);
            [id(0x000000fd), helpstring("Fired when application is quiting.")]
            void OnQuit();
            [id(0x000000fe), helpstring("Fired when the window should be shown/hidden")]
            void OnVisible([in] VARIANT_BOOL Visible);
            [id(0x000000ff), helpstring("Fired when the toolbar  should be shown/hidden")]
            void OnToolBar([in] VARIANT_BOOL ToolBar);
            [id(0x00000100), helpstring("Fired when the menubar should be shown/hidden")]
            void OnMenuBar([in] VARIANT_BOOL MenuBar);
            [id(0x00000101), helpstring("Fired when the statusbar should be shown/hidden")]
            void OnStatusBar([in] VARIANT_BOOL StatusBar);
            [id(0x00000102), helpstring("Fired when fullscreen mode should be on/off")]
            void OnFullScreen([in] VARIANT_BOOL FullScreen);
            [id(0x00000104), helpstring("Fired when theater mode should be on/off")]
            void OnTheaterMode([in] VARIANT_BOOL TheaterMode);
            [id(0x00000106), helpstring("Fired when the host window should allow/disallow resizing")]
            void WindowSetResizable([in] VARIANT_BOOL Resizable);
            [id(0x00000108), helpstring("Fired when the host window should change its Left coordinate")]
            void WindowSetLeft([in] long Left);
            [id(0x00000109), helpstring("Fired when the host window should change its Top coordinate")]
            void WindowSetTop([in] long Top);
            [id(0x0000010a), helpstring("Fired when the host window should change its width")]
            void WindowSetWidth([in] long Width);
            [id(0x0000010b), helpstring("Fired when the host window should change its height")]
            void WindowSetHeight([in] long Height);
            [id(0x00000107), helpstring("Fired when the WebBrowser is about to be closed by script")]
            void WindowClosing(
                            [in] VARIANT_BOOL IsChildWindow, 
                            [in, out] VARIANT_BOOL* Cancel);
            [id(0x0000010c), helpstring("Fired to request client sizes be converted to host window sizes")]
            void ClientToHostWindow(
                            [in, out] long* CX, 
                            [in, out] long* CY);
            [id(0x0000010d), helpstring("Fired to indicate the security level of the current web page contents")]
            void SetSecureLockIcon([in] long SecureLockIcon);
            [id(0x0000010e), helpstring("Fired to indicate the File Download dialog is opening")]
            void FileDownload([in, out] VARIANT_BOOL* Cancel);
            [id(0x0000010f), helpstring("Fired when a binding error occurs (window or frameset element).")]
            void NavigateError(
                            [in] IDispatch* pDisp, 
                            [in] VARIANT* URL, 
                            [in] VARIANT* Frame, 
                            [in] VARIANT* StatusCode, 
                            [in, out] VARIANT_BOOL* Cancel);
            [id(0x000000e1), helpstring("Fired when a print template is instantiated.")]
            void PrintTemplateInstantiation([in] IDispatch* pDisp);
            [id(0x000000e2), helpstring("Fired when a print template destroyed.")]
            void PrintTemplateTeardown([in] IDispatch* pDisp);
            [id(0x000000e3), helpstring("Fired when a page is spooled. When it is fired can be changed by a custom template.")]
            void UpdatePageStatus(
                            [in] IDispatch* pDisp, 
                            [in] VARIANT* nPage, 
                            [in] VARIANT* fDone);
            [id(0x00000110), helpstring("Fired when the global privacy impacted state changes")]
            void PrivacyImpactedStateChange([in] VARIANT_BOOL bImpacted);
    };

    [
      uuid(EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B),
      helpstring("WebBrowser Control"),
      control
    ]
    coclass WebBrowser_V1 {
        interface IWebBrowser2;
        [default] interface IWebBrowser;
        [source] dispinterface DWebBrowserEvents2;
        [default, source] dispinterface DWebBrowserEvents;
    };

    [
      uuid(8856F961-340A-11D0-A96B-00C04FD705A2),
      helpstring("WebBrowser Control"),
      control
    ]
    coclass WebBrowser {
        [default] interface IWebBrowser2;
        interface IWebBrowser;
        [default, source] dispinterface DWebBrowserEvents2;
        [source] dispinterface DWebBrowserEvents;
    };

    [
      uuid(0002DF01-0000-0000-C000-000000000046),
      helpstring("Internet Explorer Application.")
    ]
    coclass InternetExplorer {
        [default] interface IWebBrowser2;
        interface IWebBrowserApp;
        [default, source] dispinterface DWebBrowserEvents2;
        [source] dispinterface DWebBrowserEvents;
    };

    [
      uuid(C08AFD90-F2A1-11D1-8455-00A0C91F3880),
      helpstring("Shell Browser Window."),
      hidden
    ]
    coclass ShellBrowserWindow {
        [default] interface IWebBrowser2;
        interface IWebBrowserApp;
        [default, source] dispinterface DWebBrowserEvents2;
        [source] dispinterface DWebBrowserEvents;
    };

    typedef [uuid(F41E6981-28E5-11D0-82B4-00A0C90C29C5), helpstring("Constants for ShellWindows registration")]
    enum {
        SWC_EXPLORER = 0,
        SWC_BROWSER = 1,
        SWC_3RDPARTY = 2,
        SWC_CALLBACK = 4
    } ShellWindowTypeConstants;

    typedef [uuid(7716A370-38CA-11D0-A48B-00A0C90A8F39), helpstring("Options for ShellWindows FindWindow")]
    enum {
        SWFO_NEEDDISPATCH = 1,
        SWFO_INCLUDEPENDING = 2,
        SWFO_COOKIEPASSED = 4
    } ShellWindowFindWindowOptions;

    [
      uuid(FE4106E0-399A-11D0-A48C-00A0C90A8F39),
      helpstring("Event interface for IShellWindows")
    ]
    dispinterface DShellWindowsEvents {
        properties:
        methods:
            [id(0x000000c8), helpstring("A new window was registered.")]
            void WindowRegistered([in] long lCookie);
            [id(0x000000c9), helpstring("A new window was revoked.")]
            void WindowRevoked([in] long lCookie);
    };

    [
      odl,
      uuid(85CB6900-4D95-11CF-960C-0080C7F4EE85),
      helpstring("Definition of interface IShellWindows"),
      dual,
      oleautomation
    ]
    interface IShellWindows : IDispatch {
        [id(0x60020000), propget, helpstring("Get count of open Shell windows")]
        HRESULT Count([out, retval] long* Count);
        [id(00000000), helpstring("Return the shell window for the given index")]
        HRESULT Item(
                        [in, optional] VARIANT index, 
                        [out, retval] IDispatch** Folder);
        [id(0xfffffffc), helpstring("Enumerates the figures")]
        HRESULT _NewEnum([out, retval] IUnknown** ppunk);
        [id(0x60020003), hidden, helpstring("Register a window with the list")]
        HRESULT Register(
                        [in] IDispatch* pid, 
                        [in] long HWND, 
                        [in] int swClass, 
                        [out] long* plCookie);
        [id(0x60020004), hidden, helpstring("Register a pending open with the list")]
        HRESULT RegisterPending(
                        [in] long lThreadId, 
                        [in] VARIANT* pvarloc, 
                        [in] VARIANT* pvarlocRoot, 
                        [in] int swClass, 
                        [out] long* plCookie);
        [id(0x60020005), hidden, helpstring("Remove a window from the list")]
        HRESULT Revoke([in] long lCookie);
        [id(0x60020006), hidden, helpstring("Notifies the new location")]
        HRESULT OnNavigate(
                        [in] long lCookie, 
                        [in] VARIANT* pvarloc);
        [id(0x60020007), hidden, helpstring("Notifies the activation")]
        HRESULT OnActivated(
                        [in] long lCookie, 
                        [in] VARIANT_BOOL fActive);
        [id(0x60020008), hidden, helpstring("Find the window based on the location")]
        HRESULT FindWindowSW(
                        [in] VARIANT* pvarloc, 
                        [in] VARIANT* pvarlocRoot, 
                        [in] int swClass, 
                        [out] long* pHWND, 
                        [in] int swfwOptions, 
                        [out, retval] IDispatch** ppdispOut);
        [id(0x60020009), hidden, helpstring("Notifies on creation and frame name set")]
        HRESULT OnCreated(
                        [in] long lCookie, 
                        [in] IUnknown* punk);
        [id(0x6002000a), hidden, helpstring("Used by IExplore to register different processes")]
        HRESULT ProcessAttachDetach([in] VARIANT_BOOL fAttach);
    };

    [
      uuid(9BA05972-F6A8-11CF-A442-00A0C90A8F39),
      helpstring("ShellDispatch Load in Shell Context")
    ]
    coclass ShellWindows {
        [default] interface IShellWindows;
        [default, source] dispinterface DShellWindowsEvents;
    };

    [
      odl,
      uuid(729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1),
      helpstring("Shell UI Helper Control Interface"),
      dual,
      oleautomation
    ]
    interface IShellUIHelper : IDispatch {
        [id(0x00000001), hidden]
        HRESULT ResetFirstBootMode();
        [id(0x00000002), hidden]
        HRESULT ResetSafeMode();
        [id(0x00000003), hidden]
        HRESULT RefreshOfflineDesktop();
        [id(0x00000004)]
        HRESULT AddFavorite(
                        [in] BSTR URL, 
                        [in, optional] VARIANT* Title);
        [id(0x00000005)]
        HRESULT AddChannel([in] BSTR URL);
        [id(0x00000006)]
        HRESULT AddDesktopComponent(
                        [in] BSTR URL, 
                        [in] BSTR Type, 
                        [in, optional] VARIANT* Left, 
                        [in, optional] VARIANT* Top, 
                        [in, optional] VARIANT* Width, 
                        [in, optional] VARIANT* Height);
        [id(0x00000007)]
        HRESULT IsSubscribed(
                        [in] BSTR URL, 
                        [out, retval] VARIANT_BOOL* pBool);
        [id(0x00000008)]
        HRESULT NavigateAndFind(
                        [in] BSTR URL, 
                        [in] BSTR strQuery, 
                        [in] VARIANT* varTargetFrame);
        [id(0x00000009)]
        HRESULT ImportExportFavorites(
                        [in] VARIANT_BOOL fImport, 
                        [in] BSTR strImpExpPath);
        [id(0x0000000a)]
        HRESULT AutoCompleteSaveForm([in, optional] VARIANT* Form);
        [id(0x0000000b)]
        HRESULT AutoScan(
                        [in] BSTR strSearch, 
                        [in] BSTR strFailureUrl, 
                        [in, optional] VARIANT* pvarTargetFrame);
        [id(0x0000000c), hidden]
        HRESULT AutoCompleteAttach([in, optional] VARIANT* Reserved);
        [id(0x0000000d)]
        HRESULT ShowBrowserUI(
                        [in] BSTR bstrName, 
                        [in] VARIANT* pvarIn, 
                        [out, retval] VARIANT* pvarOut);
    };

    [
      uuid(64AB4BB7-111E-11D1-8F79-00C04FC2FBE1)
    ]
    coclass ShellUIHelper {
        [default] interface IShellUIHelper;
    };

    [
      uuid(55136806-B2DE-11D1-B9F2-00A0C98BC547)
    ]
    dispinterface DShellNameSpaceEvents {
        properties:
        methods:
            [id(0x00000001)]
            void FavoritesSelectionChange(
                            [in] long cItems, 
                            [in] long hItem, 
                            [in] BSTR strName, 
                            [in] BSTR strUrl, 
                            [in] long cVisits, 
                            [in] BSTR strDate, 
                            [in] long fAvailableOffline);
            [id(0x00000002)]
            void SelectionChange();
            [id(0x00000003)]
            void DoubleClick();
            [id(0x00000004)]
            void Initialized();
    };

    [
      odl,
      uuid(55136804-B2DE-11D1-B9F2-00A0C98BC547),
      helpstring("IShellFavoritesNameSpace Interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface IShellFavoritesNameSpace : IDispatch {
        [id(0x00000001), helpstring("method MoveSelectionUp")]
        HRESULT MoveSelectionUp();
        [id(0x00000002), helpstring("method MoveSelectionDown")]
        HRESULT MoveSelectionDown();
        [id(0x00000003), helpstring("method ResetSort")]
        HRESULT ResetSort();
        [id(0x00000004), helpstring("method NewFolder")]
        HRESULT NewFolder();
        [id(0x00000005), helpstring("method Synchronize")]
        HRESULT Synchronize();
        [id(0x00000006), helpstring("method Import")]
        HRESULT Import();
        [id(0x00000007), helpstring("method Export")]
        HRESULT Export();
        [id(0x00000008), helpstring("method InvokeContextMenuCommand")]
        HRESULT InvokeContextMenuCommand([in] BSTR strCommand);
        [id(0x00000009), helpstring("method MoveSelectionTo")]
        HRESULT MoveSelectionTo();
        [id(0x0000000a), propget, helpstring("Query to see if subscriptions are enabled")]
        HRESULT SubscriptionsEnabled([out, retval] VARIANT_BOOL* pBool);
        [id(0x0000000b), helpstring("method CreateSubscriptionForSelection")]
        HRESULT CreateSubscriptionForSelection([out, retval] VARIANT_BOOL* pBool);
        [id(0x0000000c), helpstring("method DeleteSubscriptionForSelection")]
        HRESULT DeleteSubscriptionForSelection([out, retval] VARIANT_BOOL* pBool);
        [id(0x0000000d), helpstring("old, use put_Root() instead")]
        HRESULT SetRoot([in] BSTR bstrFullPath);
    };

    [
      odl,
      uuid(E572D3C9-37BE-4AE2-825D-D521763E3108),
      helpstring("IShellNameSpace Interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface IShellNameSpace : IShellFavoritesNameSpace {
        [id(0x0000000e), propget, helpstring("options ")]
        HRESULT EnumOptions([out, retval] long* pgrfEnumFlags);
        [id(0x0000000e), propput, helpstring("options ")]
        HRESULT EnumOptions([in] long pgrfEnumFlags);
        [id(0x0000000f), propget, helpstring("get the selected item")]
        HRESULT SelectedItem([out, retval] IDispatch** pItem);
        [id(0x0000000f), propput, helpstring("get the selected item")]
        HRESULT SelectedItem([in] IDispatch* pItem);
        [id(0x00000010), propget, helpstring("get the root item")]
        HRESULT Root([out, retval] VARIANT* pvar);
        [id(0x00000010), propput, helpstring("get the root item")]
        HRESULT Root([in] VARIANT pvar);
        [id(0x00000011), propget]
        HRESULT Depth([out, retval] int* piDepth);
        [id(0x00000011), propput]
        HRESULT Depth([in] int piDepth);
        [id(0x00000012), propget]
        HRESULT Mode([out, retval] unsigned int* puMode);
        [id(0x00000012), propput]
        HRESULT Mode([in] unsigned int puMode);
        [id(0x00000013), propget]
        HRESULT Flags([out, retval] unsigned long* pdwFlags);
        [id(0x00000013), propput]
        HRESULT Flags([in] unsigned long pdwFlags);
        [id(0x00000014), propput]
        HRESULT TVFlags([in] unsigned long dwFlags);
        [id(0x00000014), propget]
        HRESULT TVFlags([out, retval] unsigned long* dwFlags);
        [id(0x00000015), propget]
        HRESULT Columns([out, retval] BSTR* bstrColumns);
        [id(0x00000015), propput]
        HRESULT Columns([in] BSTR bstrColumns);
        [id(0x00000016), propget, helpstring("number of view types")]
        HRESULT CountViewTypes([out, retval] int* piTypes);
        [id(0x00000017), helpstring("set view type")]
        HRESULT SetViewType([in] int iType);
        [id(0x00000018), helpstring("collection of selected items")]
        HRESULT SelectedItems([out, retval] IDispatch** ppid);
        [id(0x00000019), helpstring("expands item specified depth")]
        HRESULT Expand(
                        [in] VARIANT var, 
                        int iDepth);
        [id(0x0000001a), helpstring("unselects all items")]
        HRESULT UnselectAll();
    };

    [
      uuid(55136805-B2DE-11D1-B9F2-00A0C98BC547)
    ]
    coclass ShellNameSpace {
        [default] interface IShellNameSpace;
        [default, source] dispinterface DShellNameSpaceEvents;
    };

    [
      odl,
      uuid(F3470F24-15FD-11D2-BB2E-00805FF7EFCA),
      helpstring("Script Error List Interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface IScriptErrorList : IDispatch {
        [id(0x0000000a)]
        HRESULT advanceError();
        [id(0x0000000b)]
        HRESULT retreatError();
        [id(0x0000000c)]
        HRESULT canAdvanceError([out, retval] long* pfCanAdvance);
        [id(0x0000000d)]
        HRESULT canRetreatError([out, retval] long* pfCanRetreat);
        [id(0x0000000e)]
        HRESULT getErrorLine([out, retval] long* plLine);
        [id(0x0000000f)]
        HRESULT getErrorChar([out, retval] long* plChar);
        [id(0x00000010)]
        HRESULT getErrorCode([out, retval] long* plCode);
        [id(0x00000011)]
        HRESULT getErrorMsg([out, retval] BSTR* pstr);
        [id(0x00000012)]
        HRESULT getErrorUrl([out, retval] BSTR* pstr);
        [id(0x00000017)]
        HRESULT getAlwaysShowLockState([out, retval] long* pfAlwaysShowLocked);
        [id(0x00000013)]
        HRESULT getDetailsPaneOpen([out, retval] long* pfDetailsPaneOpen);
        [id(0x00000014)]
        HRESULT setDetailsPaneOpen(long fDetailsPaneOpen);
        [id(0x00000015)]
        HRESULT getPerErrorDisplay([out, retval] long* pfPerErrorDisplay);
        [id(0x00000016)]
        HRESULT setPerErrorDisplay(long fPerErrorDisplay);
    };

    [
      uuid(EFD01300-160F-11D2-BB2E-00805FF7EFCA),
      hidden
    ]
    coclass CScriptErrorList {
        [default] interface IScriptErrorList;
    };

    [
      odl,
      uuid(BA9239A4-3DD5-11D2-BF8B-00C04FB93661),
      helpstring("Enumerated Search"),
      hidden,
      dual,
      oleautomation
    ]
    interface ISearch : IDispatch {
        [id(0x60020000), propget, helpstring("Get search title")]
        HRESULT Title([out, retval] BSTR* pbstrTitle);
        [id(0x60020001), propget, helpstring("Get search guid")]
        HRESULT Id([out, retval] BSTR* pbstrId);
        [id(0x60020002), propget, helpstring("Get search url")]
        HRESULT URL([out, retval] BSTR* pbstrUrl);
    };

    [
      odl,
      uuid(47C922A2-3DD5-11D2-BF8B-00C04FB93661),
      helpstring("Searches Enum"),
      hidden,
      dual,
      oleautomation
    ]
    interface ISearches : IDispatch {
        [id(0x60020000), propget, helpstring("Get the count of searches")]
        HRESULT Count([out, retval] long* plCount);
        [id(0x60020001), propget, helpstring("Get the default search name")]
        HRESULT Default([out, retval] BSTR* pbstrDefault);
        [id(0x60020002), helpstring("Return the specified search")]
        HRESULT Item(
                        [in, optional] VARIANT index, 
                        [out, retval] ISearch** ppid);
        [id(0xfffffffc), helpstring("Enumerates the searches")]
        HRESULT _NewEnum([out, retval] IUnknown** ppunk);
    };

    [
      odl,
      uuid(72423E8F-8011-11D2-BE79-00A0C9A83DA1),
      helpstring("ISearchAssistantOC Interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface ISearchAssistantOC : IDispatch {
        [id(0x00000001)]
        HRESULT AddNextMenuItem(
                        [in] BSTR bstrText, 
                        [in] long idItem);
        [id(0x00000002)]
        HRESULT SetDefaultSearchUrl([in] BSTR bstrUrl);
        [id(0x00000003)]
        HRESULT NavigateToDefaultSearch();
        [id(0x00000004)]
        HRESULT IsRestricted(
                        [in] BSTR bstrGuid, 
                        [out, retval] VARIANT_BOOL* pVal);
        [id(0x00000005), propget, helpstring("property ShellFeaturesEnabled")]
        HRESULT ShellFeaturesEnabled([out, retval] VARIANT_BOOL* pVal);
        [id(0x00000006), propget, helpstring("property SearchAssistantDefault")]
        HRESULT SearchAssistantDefault([out, retval] VARIANT_BOOL* pVal);
        [id(0x00000007), propget, helpstring("Get searches")]
        HRESULT Searches([out, retval] ISearches** ppid);
        [id(0x00000008), propget, helpstring("Returns true if the current folder is web folder")]
        HRESULT InWebFolder([out, retval] VARIANT_BOOL* pVal);
        [id(0x00000009)]
        HRESULT PutProperty(
                        [in] VARIANT_BOOL bPerLocale, 
                        [in] BSTR bstrName, 
                        [in] BSTR bstrValue);
        [id(0x0000000a)]
        HRESULT GetProperty(
                        [in] VARIANT_BOOL bPerLocale, 
                        [in] BSTR bstrName, 
                        [out, retval] BSTR* pbstrValue);
        [id(0x0000000b), propput]
        HRESULT EventHandled([in] VARIANT_BOOL rhs);
        [id(0x0000000c)]
        HRESULT ResetNextMenu();
        [id(0x0000000d)]
        HRESULT FindOnWeb();
        [id(0x0000000e)]
        HRESULT FindFilesOrFolders();
        [id(0x0000000f)]
        HRESULT FindComputer();
        [id(0x00000010)]
        HRESULT FindPrinter();
        [id(0x00000011)]
        HRESULT FindPeople();
        [id(0x00000012)]
        HRESULT GetSearchAssistantURL(
                        [in] VARIANT_BOOL bSubstitute, 
                        [in] VARIANT_BOOL bCustomize, 
                        [out, retval] BSTR* pbstrValue);
        [id(0x00000013)]
        HRESULT NotifySearchSettingsChanged();
        [id(0x00000014), propput]
        HRESULT ASProvider([in] BSTR pProvider);
        [id(0x00000014), propget]
        HRESULT ASProvider([out, retval] BSTR* pProvider);
        [id(0x00000015), propput]
        HRESULT ASSetting([in] int pSetting);
        [id(0x00000015), propget]
        HRESULT ASSetting([out, retval] int* pSetting);
        [id(0x00000016)]
        HRESULT NETDetectNextNavigate();
        [id(0x00000017)]
        HRESULT PutFindText([in] BSTR FindText);
        [id(0x00000018), propget]
        HRESULT Version([out, retval] int* pVersion);
        [id(0x00000019)]
        HRESULT EncodeString(
                        [in] BSTR bstrValue, 
                        [in] BSTR bstrCharSet, 
                        [in] VARIANT_BOOL bUseUTF8, 
                        [out, retval] BSTR* pbstrResult);
    };

    [
      odl,
      uuid(72423E8F-8011-11D2-BE79-00A0C9A83DA2),
      helpstring("ISearchAssistantOC2 Interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface ISearchAssistantOC2 : ISearchAssistantOC {
        [id(0x0000001a), propget]
        HRESULT ShowFindPrinter([out, retval] VARIANT_BOOL* pbShowFindPrinter);
    };

    [
      odl,
      uuid(72423E8F-8011-11D2-BE79-00A0C9A83DA3),
      helpstring("ISearchAssistantOC3 Interface"),
      hidden,
      dual,
      oleautomation
    ]
    interface ISearchAssistantOC3 : ISearchAssistantOC2 {
        [id(0x0000001b), propget]
        HRESULT SearchCompanionAvailable([out, retval] VARIANT_BOOL* pbAvailable);
        [id(0x0000001c), propput]
        HRESULT UseSearchCompanion([in] VARIANT_BOOL pbUseSC);
        [id(0x0000001c), propget]
        HRESULT UseSearchCompanion([out, retval] VARIANT_BOOL* pbUseSC);
    };

    [
      uuid(1611FDDA-445B-11D2-85DE-00C04FA35C89),
      hidden
    ]
    dispinterface _SearchAssistantEvents {
        properties:
        methods:
            [id(0x00000001)]
            void OnNextMenuSelect([in] long idItem);
            [id(0x00000002)]
            void OnNewSearch();
    };

    [
      uuid(B45FF030-4447-11D2-85DE-00C04FA35C89),
      helpstring("SearchAssistantOC Class"),
      hidden
    ]
    coclass SearchAssistantOC {
        [default] interface ISearchAssistantOC3;
        [default, source] dispinterface _SearchAssistantEvents;
    };
};
