From 96b0b34282a123eef34731f3cd731a4b14622f17 Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Thu, 4 Sep 2003 02:00:46 +0000
Subject: [PATCH] Converted obj_webbrowser.h to IDL and moved the definitions
 to exdisp.idl where they belong.

---
 dlls/shdocvw/shdocvw.h        |    2 +-
 dlls/shdocvw/webbrowser.c     |   64 +-
 dlls/shlwapi/ordinal.c        |    9 +-
 include/Makefile.in           |    2 +-
 include/exdisp.h              | 1152 +++++++++++++++++++++++++++++++++
 include/exdisp.idl            |  121 ++++
 include/wine/obj_webbrowser.h |  225 -------
 libs/uuid/uuid.c              |    3 +-
 8 files changed, 1313 insertions(+), 265 deletions(-)
 create mode 100644 include/exdisp.h
 create mode 100644 include/exdisp.idl
 delete mode 100644 include/wine/obj_webbrowser.h

diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index e1752237636..c20df248511 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -30,7 +30,7 @@
 #include "ole2.h"
 #include "olectl.h"
 #include "shlobj.h"
-#include "wine/obj_webbrowser.h"
+#include "exdisp.h"
 
 /**********************************************************************
  * IClassFactory declaration for SHDOCVW.DLL
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index 831975eab8b..e37285423b9 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -27,7 +27,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
  * Implement the IWebBrowser interface
  */
 
-static HRESULT WINAPI WB_QueryInterface(LPWEBBROWSER iface, REFIID riid, LPVOID *ppobj)
+static HRESULT WINAPI WB_QueryInterface(IWebBrowser *iface, REFIID riid, LPVOID *ppobj)
 {
     ICOM_THIS(IWebBrowserImpl, iface);
 
@@ -35,7 +35,7 @@ static HRESULT WINAPI WB_QueryInterface(LPWEBBROWSER iface, REFIID riid, LPVOID
     return E_NOINTERFACE;
 }
 
-static ULONG WINAPI WB_AddRef(LPWEBBROWSER iface)
+static ULONG WINAPI WB_AddRef(IWebBrowser *iface)
 {
     ICOM_THIS(IWebBrowserImpl, iface);
 
@@ -43,7 +43,7 @@ static ULONG WINAPI WB_AddRef(LPWEBBROWSER iface)
     return ++(This->ref);
 }
 
-static ULONG WINAPI WB_Release(LPWEBBROWSER iface)
+static ULONG WINAPI WB_Release(IWebBrowser *iface)
 {
     ICOM_THIS(IWebBrowserImpl, iface);
 
@@ -53,20 +53,20 @@ static ULONG WINAPI WB_Release(LPWEBBROWSER iface)
 }
 
 /* IDispatch methods */
-static HRESULT WINAPI WB_GetTypeInfoCount(LPWEBBROWSER iface, UINT *pctinfo)
+static HRESULT WINAPI WB_GetTypeInfoCount(IWebBrowser *iface, UINT *pctinfo)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_GetTypeInfo(LPWEBBROWSER iface, UINT iTInfo, LCID lcid,
+static HRESULT WINAPI WB_GetTypeInfo(IWebBrowser *iface, UINT iTInfo, LCID lcid,
                                      LPTYPEINFO *ppTInfo)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_GetIDsOfNames(LPWEBBROWSER iface, REFIID riid,
+static HRESULT WINAPI WB_GetIDsOfNames(IWebBrowser *iface, REFIID riid,
                                        LPOLESTR *rgszNames, UINT cNames,
                                        LCID lcid, DISPID *rgDispId)
 {
@@ -74,7 +74,7 @@ static HRESULT WINAPI WB_GetIDsOfNames(LPWEBBROWSER iface, REFIID riid,
     return S_OK;
 }
 
-static HRESULT WINAPI WB_Invoke(LPWEBBROWSER iface, DISPID dispIdMember,
+static HRESULT WINAPI WB_Invoke(IWebBrowser *iface, DISPID dispIdMember,
                                 REFIID riid, LCID lcid, WORD wFlags,
                                 DISPPARAMS *pDispParams, VARIANT *pVarResult,
                                 EXCEPINFO *pExepInfo, UINT *puArgErr)
@@ -84,31 +84,31 @@ static HRESULT WINAPI WB_Invoke(LPWEBBROWSER iface, DISPID dispIdMember,
 }
 
 /* IWebBrowser methods */
-static HRESULT WINAPI WB_GoBack(LPWEBBROWSER iface)
+static HRESULT WINAPI WB_GoBack(IWebBrowser *iface)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_GoForward(LPWEBBROWSER iface)
+static HRESULT WINAPI WB_GoForward(IWebBrowser *iface)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_GoHome(LPWEBBROWSER iface)
+static HRESULT WINAPI WB_GoHome(IWebBrowser *iface)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_GoSearch(LPWEBBROWSER iface)
+static HRESULT WINAPI WB_GoSearch(IWebBrowser *iface)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_Navigate(LPWEBBROWSER iface, BSTR URL,
+static HRESULT WINAPI WB_Navigate(IWebBrowser *iface, BSTR URL,
                                   VARIANT *Flags, VARIANT *TargetFrameName,
                                   VARIANT *PostData, VARIANT *Headers)
 {
@@ -117,121 +117,121 @@ static HRESULT WINAPI WB_Navigate(LPWEBBROWSER iface, BSTR URL,
     return S_OK;
 }
 
-static HRESULT WINAPI WB_Refresh(LPWEBBROWSER iface)
+static HRESULT WINAPI WB_Refresh(IWebBrowser *iface)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_Refresh2(LPWEBBROWSER iface, VARIANT *Level)
+static HRESULT WINAPI WB_Refresh2(IWebBrowser *iface, VARIANT *Level)
 {
     FIXME("stub: %p\n", Level);
     return S_OK;
 }
 
-static HRESULT WINAPI WB_Stop(LPWEBBROWSER iface)
+static HRESULT WINAPI WB_Stop(IWebBrowser *iface)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Application(LPWEBBROWSER iface, LPVOID *ppDisp)
+static HRESULT WINAPI WB_get_Application(IWebBrowser *iface, IDispatch **ppDisp)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Parent(LPWEBBROWSER iface, LPVOID *ppDisp)
+static HRESULT WINAPI WB_get_Parent(IWebBrowser *iface, IDispatch **ppDisp)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Container(LPWEBBROWSER iface, LPVOID *ppDisp)
+static HRESULT WINAPI WB_get_Container(IWebBrowser *iface, IDispatch **ppDisp)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Document(LPWEBBROWSER iface, LPVOID *ppDisp)
+static HRESULT WINAPI WB_get_Document(IWebBrowser *iface, IDispatch **ppDisp)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_TopLevelContainer(LPWEBBROWSER iface, VARIANT *pBool)
+static HRESULT WINAPI WB_get_TopLevelContainer(IWebBrowser *iface, VARIANT_BOOL *pBool)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Type(LPWEBBROWSER iface, BSTR *Type)
+static HRESULT WINAPI WB_get_Type(IWebBrowser *iface, BSTR *Type)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Left(LPWEBBROWSER iface, long *pl)
+static HRESULT WINAPI WB_get_Left(IWebBrowser *iface, long *pl)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_put_Left(LPWEBBROWSER iface, long Left)
+static HRESULT WINAPI WB_put_Left(IWebBrowser *iface, long Left)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Top(LPWEBBROWSER iface, long *pl)
+static HRESULT WINAPI WB_get_Top(IWebBrowser *iface, long *pl)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_put_Top(LPWEBBROWSER iface, long Top)
+static HRESULT WINAPI WB_put_Top(IWebBrowser *iface, long Top)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Width(LPWEBBROWSER iface, long *pl)
+static HRESULT WINAPI WB_get_Width(IWebBrowser *iface, long *pl)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_put_Width(LPWEBBROWSER iface, long Width)
+static HRESULT WINAPI WB_put_Width(IWebBrowser *iface, long Width)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Height(LPWEBBROWSER iface, long *pl)
+static HRESULT WINAPI WB_get_Height(IWebBrowser *iface, long *pl)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_put_Height(LPWEBBROWSER iface, long Height)
+static HRESULT WINAPI WB_put_Height(IWebBrowser *iface, long Height)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_LocationName(LPWEBBROWSER iface, BSTR *LocationName)
+static HRESULT WINAPI WB_get_LocationName(IWebBrowser *iface, BSTR *LocationName)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_LocationURL(LPWEBBROWSER iface, BSTR *LocationURL)
+static HRESULT WINAPI WB_get_LocationURL(IWebBrowser *iface, BSTR *LocationURL)
 {
     FIXME("stub \n");
     return S_OK;
 }
 
-static HRESULT WINAPI WB_get_Busy(LPWEBBROWSER iface, VARIANT *pBool)
+static HRESULT WINAPI WB_get_Busy(IWebBrowser *iface, VARIANT_BOOL *pBool)
 {
     FIXME("stub \n");
     return S_OK;
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
index b6778807eb1..e192644c317 100644
--- a/dlls/shlwapi/ordinal.c
+++ b/dlls/shlwapi/ordinal.c
@@ -29,18 +29,19 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
-#include "docobj.h"
-#include "shlguid.h"
 #include "windef.h"
-#include "winnls.h"
 #include "winbase.h"
+#include "winuser.h"
+#include "winnls.h"
 #include "ddeml.h"
+#include "docobj.h"
+#include "exdisp.h"
+#include "shlguid.h"
 #include "shlobj.h"
 #include "olectl.h"
 #include "shellapi.h"
 #include "commdlg.h"
 #include "wine/unicode.h"
-#include "wine/obj_webbrowser.h"
 #include "servprov.h"
 #include "wingdi.h"
 #include "winreg.h"
diff --git a/include/Makefile.in b/include/Makefile.in
index c20321d5124..d633cb7030c 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -7,6 +7,7 @@ MODULE	  = none
 IDL_SRCS = \
 	comcat.idl \
 	docobj.idl \
+	exdisp.idl \
 	oaidl.idl \
 	objidl.idl \
 	ocidl.idl \
@@ -252,7 +253,6 @@ WINE_INCLUDES = \
 	obj_shellfolder.h \
 	obj_shelllink.h \
 	obj_shellview.h \
-	obj_webbrowser.h \
 	unicode.h
 
 EXTRASUBDIRS = bitmaps msvcrt msvcrt/sys wine
diff --git a/include/exdisp.h b/include/exdisp.h
new file mode 100644
index 00000000000..85657082f25
--- /dev/null
+++ b/include/exdisp.h
@@ -0,0 +1,1152 @@
+/*** Autogenerated by WIDL 0.1 from exdisp.idl - Do not edit ***/
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_EXDISP_H
+#define __WIDL_EXDISP_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <ocidl.h>
+#include <docobj.h>
+#ifndef __IWebBrowser_FWD_DEFINED__
+#define __IWebBrowser_FWD_DEFINED__
+typedef struct IWebBrowser IWebBrowser;
+#endif
+
+typedef enum BrowserNavConstants {
+    navOpenInNewWindow = 0x1,
+    navNoHistory = 0x2,
+    navNoReadFromCache = 0x4,
+    navNoWriteToCache = 0x8,
+    navAllowAutosearch = 0x10,
+    navBrowserBar = 0x20,
+    navHyperlink = 0x40,
+    navEnforceRestricted = 0x80
+} BrowserNavConstants;
+
+typedef enum RefreshConstants {
+    REFRESH_NORMAL = 0,
+    REFRESH_IFEXPIRED = 1,
+    REFRESH_COMPLETELY = 3
+} RefreshConstants;
+
+/*****************************************************************************
+ * IWebBrowser interface
+ */
+#ifndef __IWebBrowser_INTERFACE_DEFINED__
+#define __IWebBrowser_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWebBrowser, 0xeab22ac1, 0x30c1, 0x11cf, 0xa7,0xeb, 0x00,0x00,0xc0,0x5b,0xae,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IWebBrowser : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE GoBack(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GoForward(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GoHome(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GoSearch(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Navigate(
+        BSTR URL,
+        VARIANT* Flags,
+        VARIANT* TargetFrameName,
+        VARIANT* PostData,
+        VARIANT* Headers) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Refresh(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Refresh2(
+        VARIANT* Level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stop(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Application(
+        IDispatch** ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Parent(
+        IDispatch** ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Container(
+        IDispatch** ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Document(
+        IDispatch** ppDisp) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TopLevelContainer(
+        VARIANT_BOOL* pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Type(
+        BSTR* Type) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Left(
+        long* pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Left(
+        long Left) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Top(
+        long* pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Top(
+        long Top) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Width(
+        long* pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Width(
+        long Width) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Height(
+        long* pl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Height(
+        long Height) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocationName(
+        BSTR* LocationName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LocationURL(
+        BSTR* LocationURL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Busy(
+        VARIANT_BOOL* pBool) = 0;
+
+};
+#else
+typedef struct IWebBrowserVtbl IWebBrowserVtbl;
+struct IWebBrowser {
+    const IWebBrowserVtbl* lpVtbl;
+};
+struct IWebBrowserVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWebBrowser* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWebBrowser* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWebBrowser* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWebBrowser* This,
+        UINT* pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWebBrowser* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo** ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWebBrowser* This,
+        REFIID riid,
+        LPOLESTR* rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID* rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWebBrowser* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS* pDispParams,
+        VARIANT* pVarResult,
+        EXCEPINFO* pExcepInfo,
+        UINT* puArgErr);
+
+    /*** IWebBrowser methods ***/
+    HRESULT (STDMETHODCALLTYPE *GoBack)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoForward)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoHome)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoSearch)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *Navigate)(
+        IWebBrowser* This,
+        BSTR URL,
+        VARIANT* Flags,
+        VARIANT* TargetFrameName,
+        VARIANT* PostData,
+        VARIANT* Headers);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh2)(
+        IWebBrowser* This,
+        VARIANT* Level);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IWebBrowser* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_Application)(
+        IWebBrowser* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Parent)(
+        IWebBrowser* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Container)(
+        IWebBrowser* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Document)(
+        IWebBrowser* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)(
+        IWebBrowser* This,
+        VARIANT_BOOL* pBool);
+
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IWebBrowser* This,
+        BSTR* Type);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IWebBrowser* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IWebBrowser* This,
+        long Left);
+
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IWebBrowser* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IWebBrowser* This,
+        long Top);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IWebBrowser* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IWebBrowser* This,
+        long Width);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IWebBrowser* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IWebBrowser* This,
+        long Height);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationName)(
+        IWebBrowser* This,
+        BSTR* LocationName);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationURL)(
+        IWebBrowser* This,
+        BSTR* LocationURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_Busy)(
+        IWebBrowser* This,
+        VARIANT_BOOL* pBool);
+
+};
+
+/*** IUnknown methods ***/
+#define IWebBrowser_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IWebBrowser_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IWebBrowser_Release(p) (p)->lpVtbl->Release(p)
+/*** IDispatch methods ***/
+#define IWebBrowser_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a)
+#define IWebBrowser_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
+#define IWebBrowser_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
+#define IWebBrowser_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
+/*** IWebBrowser methods ***/
+#define IWebBrowser_GoBack(p) (p)->lpVtbl->GoBack(p)
+#define IWebBrowser_GoForward(p) (p)->lpVtbl->GoForward(p)
+#define IWebBrowser_GoHome(p) (p)->lpVtbl->GoHome(p)
+#define IWebBrowser_GoSearch(p) (p)->lpVtbl->GoSearch(p)
+#define IWebBrowser_Navigate(p,a,b,c,d,e) (p)->lpVtbl->Navigate(p,a,b,c,d,e)
+#define IWebBrowser_Refresh(p) (p)->lpVtbl->Refresh(p)
+#define IWebBrowser_Refresh2(p,a) (p)->lpVtbl->Refresh2(p,a)
+#define IWebBrowser_Stop(p) (p)->lpVtbl->Stop(p)
+#define IWebBrowser_get_Application(p,a) (p)->lpVtbl->get_Application(p,a)
+#define IWebBrowser_get_Parent(p,a) (p)->lpVtbl->get_Parent(p,a)
+#define IWebBrowser_get_Container(p,a) (p)->lpVtbl->get_Container(p,a)
+#define IWebBrowser_get_Document(p,a) (p)->lpVtbl->get_Document(p,a)
+#define IWebBrowser_get_TopLevelContainer(p,a) (p)->lpVtbl->get_TopLevelContainer(p,a)
+#define IWebBrowser_get_Type(p,a) (p)->lpVtbl->get_Type(p,a)
+#define IWebBrowser_get_Left(p,a) (p)->lpVtbl->get_Left(p,a)
+#define IWebBrowser_put_Left(p,a) (p)->lpVtbl->put_Left(p,a)
+#define IWebBrowser_get_Top(p,a) (p)->lpVtbl->get_Top(p,a)
+#define IWebBrowser_put_Top(p,a) (p)->lpVtbl->put_Top(p,a)
+#define IWebBrowser_get_Width(p,a) (p)->lpVtbl->get_Width(p,a)
+#define IWebBrowser_put_Width(p,a) (p)->lpVtbl->put_Width(p,a)
+#define IWebBrowser_get_Height(p,a) (p)->lpVtbl->get_Height(p,a)
+#define IWebBrowser_put_Height(p,a) (p)->lpVtbl->put_Height(p,a)
+#define IWebBrowser_get_LocationName(p,a) (p)->lpVtbl->get_LocationName(p,a)
+#define IWebBrowser_get_LocationURL(p,a) (p)->lpVtbl->get_LocationURL(p,a)
+#define IWebBrowser_get_Busy(p,a) (p)->lpVtbl->get_Busy(p,a)
+
+#endif
+
+#define IWebBrowser_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IDispatch methods ***/ \
+    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT* pctinfo) PURE; \
+    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) PURE; \
+    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) PURE; \
+    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) PURE; \
+    /*** IWebBrowser methods ***/ \
+    STDMETHOD_(HRESULT,GoBack)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GoForward)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GoHome)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GoSearch)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Navigate)(THIS_ BSTR URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers) PURE; \
+    STDMETHOD_(HRESULT,Refresh)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Refresh2)(THIS_ VARIANT* Level) PURE; \
+    STDMETHOD_(HRESULT,Stop)(THIS) PURE; \
+    STDMETHOD_(HRESULT,get_Application)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_Parent)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_Container)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_Document)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_TopLevelContainer)(THIS_ VARIANT_BOOL* pBool) PURE; \
+    STDMETHOD_(HRESULT,get_Type)(THIS_ BSTR* Type) PURE; \
+    STDMETHOD_(HRESULT,get_Left)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Left)(THIS_ long Left) PURE; \
+    STDMETHOD_(HRESULT,get_Top)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Top)(THIS_ long Top) PURE; \
+    STDMETHOD_(HRESULT,get_Width)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Width)(THIS_ long Width) PURE; \
+    STDMETHOD_(HRESULT,get_Height)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Height)(THIS_ long Height) PURE; \
+    STDMETHOD_(HRESULT,get_LocationName)(THIS_ BSTR* LocationName) PURE; \
+    STDMETHOD_(HRESULT,get_LocationURL)(THIS_ BSTR* LocationURL) PURE; \
+    STDMETHOD_(HRESULT,get_Busy)(THIS_ VARIANT_BOOL* pBool) PURE;
+
+HRESULT CALLBACK IWebBrowser_GoBack_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoBack_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_GoForward_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoForward_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_GoHome_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoHome_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_GoSearch_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_GoSearch_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_Navigate_Proxy(
+    IWebBrowser* This,
+    BSTR URL,
+    VARIANT* Flags,
+    VARIANT* TargetFrameName,
+    VARIANT* PostData,
+    VARIANT* Headers);
+void __RPC_STUB IWebBrowser_Navigate_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_Refresh_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_Refresh_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_Refresh2_Proxy(
+    IWebBrowser* This,
+    VARIANT* Level);
+void __RPC_STUB IWebBrowser_Refresh2_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_Stop_Proxy(
+    IWebBrowser* This);
+void __RPC_STUB IWebBrowser_Stop_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Application_Proxy(
+    IWebBrowser* This,
+    IDispatch** ppDisp);
+void __RPC_STUB IWebBrowser_get_Application_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Parent_Proxy(
+    IWebBrowser* This,
+    IDispatch** ppDisp);
+void __RPC_STUB IWebBrowser_get_Parent_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Container_Proxy(
+    IWebBrowser* This,
+    IDispatch** ppDisp);
+void __RPC_STUB IWebBrowser_get_Container_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Document_Proxy(
+    IWebBrowser* This,
+    IDispatch** ppDisp);
+void __RPC_STUB IWebBrowser_get_Document_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_TopLevelContainer_Proxy(
+    IWebBrowser* This,
+    VARIANT_BOOL* pBool);
+void __RPC_STUB IWebBrowser_get_TopLevelContainer_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Type_Proxy(
+    IWebBrowser* This,
+    BSTR* Type);
+void __RPC_STUB IWebBrowser_get_Type_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Left_Proxy(
+    IWebBrowser* This,
+    long* pl);
+void __RPC_STUB IWebBrowser_get_Left_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_put_Left_Proxy(
+    IWebBrowser* This,
+    long Left);
+void __RPC_STUB IWebBrowser_put_Left_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Top_Proxy(
+    IWebBrowser* This,
+    long* pl);
+void __RPC_STUB IWebBrowser_get_Top_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_put_Top_Proxy(
+    IWebBrowser* This,
+    long Top);
+void __RPC_STUB IWebBrowser_put_Top_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Width_Proxy(
+    IWebBrowser* This,
+    long* pl);
+void __RPC_STUB IWebBrowser_get_Width_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_put_Width_Proxy(
+    IWebBrowser* This,
+    long Width);
+void __RPC_STUB IWebBrowser_put_Width_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Height_Proxy(
+    IWebBrowser* This,
+    long* pl);
+void __RPC_STUB IWebBrowser_get_Height_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_put_Height_Proxy(
+    IWebBrowser* This,
+    long Height);
+void __RPC_STUB IWebBrowser_put_Height_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_LocationName_Proxy(
+    IWebBrowser* This,
+    BSTR* LocationName);
+void __RPC_STUB IWebBrowser_get_LocationName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_LocationURL_Proxy(
+    IWebBrowser* This,
+    BSTR* LocationURL);
+void __RPC_STUB IWebBrowser_get_LocationURL_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowser_get_Busy_Proxy(
+    IWebBrowser* This,
+    VARIANT_BOOL* pBool);
+void __RPC_STUB IWebBrowser_get_Busy_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWebBrowser_INTERFACE_DEFINED__ */
+
+#ifndef __IWebBrowserApp_FWD_DEFINED__
+#define __IWebBrowserApp_FWD_DEFINED__
+typedef struct IWebBrowserApp IWebBrowserApp;
+#endif
+
+/*****************************************************************************
+ * IWebBrowserApp interface
+ */
+#ifndef __IWebBrowserApp_INTERFACE_DEFINED__
+#define __IWebBrowserApp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWebBrowserApp, 0x0002df05, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+struct IWebBrowserApp : public IWebBrowser
+{
+    virtual HRESULT STDMETHODCALLTYPE Quit(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClientToWindow(
+        int* pcx,
+        int* pcy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PutProperty(
+        BSTR szProperty,
+        VARIANT vtValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperty(
+        BSTR szProperty,
+        VARIANT* pvtValue) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR* Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HWND(
+        long* pHWND) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FullName(
+        BSTR* FullName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Path(
+        BSTR* Path) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Visible(
+        VARIANT_BOOL* pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Visible(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_StatusBar(
+        VARIANT_BOOL* pBool) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_StatusBar(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_StatusText(
+        BSTR* StatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_StatusText(
+        BSTR StatusText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ToolBar(
+        int* Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_ToolBar(
+        int Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MenuBar(
+        VARIANT_BOOL* Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MenuBar(
+        VARIANT_BOOL Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FullScreen(
+        VARIANT_BOOL* pbFullScreen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FullScreen(
+        VARIANT_BOOL bFullScreen) = 0;
+
+};
+#else
+typedef struct IWebBrowserAppVtbl IWebBrowserAppVtbl;
+struct IWebBrowserApp {
+    const IWebBrowserAppVtbl* lpVtbl;
+};
+struct IWebBrowserAppVtbl {
+    ICOM_MSVTABLE_COMPAT_FIELDS
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWebBrowserApp* This,
+        REFIID riid,
+        void** ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWebBrowserApp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWebBrowserApp* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IWebBrowserApp* This,
+        UINT* pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IWebBrowserApp* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo** ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IWebBrowserApp* This,
+        REFIID riid,
+        LPOLESTR* rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID* rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IWebBrowserApp* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS* pDispParams,
+        VARIANT* pVarResult,
+        EXCEPINFO* pExcepInfo,
+        UINT* puArgErr);
+
+    /*** IWebBrowser methods ***/
+    HRESULT (STDMETHODCALLTYPE *GoBack)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoForward)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoHome)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *GoSearch)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *Navigate)(
+        IWebBrowserApp* This,
+        BSTR URL,
+        VARIANT* Flags,
+        VARIANT* TargetFrameName,
+        VARIANT* PostData,
+        VARIANT* Headers);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *Refresh2)(
+        IWebBrowserApp* This,
+        VARIANT* Level);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *get_Application)(
+        IWebBrowserApp* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Parent)(
+        IWebBrowserApp* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Container)(
+        IWebBrowserApp* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_Document)(
+        IWebBrowserApp* This,
+        IDispatch** ppDisp);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopLevelContainer)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL* pBool);
+
+    HRESULT (STDMETHODCALLTYPE *get_Type)(
+        IWebBrowserApp* This,
+        BSTR* Type);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IWebBrowserApp* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IWebBrowserApp* This,
+        long Left);
+
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IWebBrowserApp* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IWebBrowserApp* This,
+        long Top);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IWebBrowserApp* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IWebBrowserApp* This,
+        long Width);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IWebBrowserApp* This,
+        long* pl);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IWebBrowserApp* This,
+        long Height);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationName)(
+        IWebBrowserApp* This,
+        BSTR* LocationName);
+
+    HRESULT (STDMETHODCALLTYPE *get_LocationURL)(
+        IWebBrowserApp* This,
+        BSTR* LocationURL);
+
+    HRESULT (STDMETHODCALLTYPE *get_Busy)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL* pBool);
+
+    /*** IWebBrowserApp methods ***/
+    HRESULT (STDMETHODCALLTYPE *Quit)(
+        IWebBrowserApp* This);
+
+    HRESULT (STDMETHODCALLTYPE *ClientToWindow)(
+        IWebBrowserApp* This,
+        int* pcx,
+        int* pcy);
+
+    HRESULT (STDMETHODCALLTYPE *PutProperty)(
+        IWebBrowserApp* This,
+        BSTR szProperty,
+        VARIANT vtValue);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        IWebBrowserApp* This,
+        BSTR szProperty,
+        VARIANT* pvtValue);
+
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IWebBrowserApp* This,
+        BSTR* Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_HWND)(
+        IWebBrowserApp* This,
+        long* pHWND);
+
+    HRESULT (STDMETHODCALLTYPE *get_FullName)(
+        IWebBrowserApp* This,
+        BSTR* FullName);
+
+    HRESULT (STDMETHODCALLTYPE *get_Path)(
+        IWebBrowserApp* This,
+        BSTR* Path);
+
+    HRESULT (STDMETHODCALLTYPE *get_Visible)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL* pBool);
+
+    HRESULT (STDMETHODCALLTYPE *put_Visible)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_StatusBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL* pBool);
+
+    HRESULT (STDMETHODCALLTYPE *put_StatusBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_StatusText)(
+        IWebBrowserApp* This,
+        BSTR* StatusText);
+
+    HRESULT (STDMETHODCALLTYPE *put_StatusText)(
+        IWebBrowserApp* This,
+        BSTR StatusText);
+
+    HRESULT (STDMETHODCALLTYPE *get_ToolBar)(
+        IWebBrowserApp* This,
+        int* Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_ToolBar)(
+        IWebBrowserApp* This,
+        int Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_MenuBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL* Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_MenuBar)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_FullScreen)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL* pbFullScreen);
+
+    HRESULT (STDMETHODCALLTYPE *put_FullScreen)(
+        IWebBrowserApp* This,
+        VARIANT_BOOL bFullScreen);
+
+};
+
+/*** IUnknown methods ***/
+#define IWebBrowserApp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IWebBrowserApp_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IWebBrowserApp_Release(p) (p)->lpVtbl->Release(p)
+/*** IDispatch methods ***/
+#define IWebBrowserApp_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a)
+#define IWebBrowserApp_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
+#define IWebBrowserApp_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
+#define IWebBrowserApp_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
+/*** IWebBrowser methods ***/
+#define IWebBrowserApp_GoBack(p) (p)->lpVtbl->GoBack(p)
+#define IWebBrowserApp_GoForward(p) (p)->lpVtbl->GoForward(p)
+#define IWebBrowserApp_GoHome(p) (p)->lpVtbl->GoHome(p)
+#define IWebBrowserApp_GoSearch(p) (p)->lpVtbl->GoSearch(p)
+#define IWebBrowserApp_Navigate(p,a,b,c,d,e) (p)->lpVtbl->Navigate(p,a,b,c,d,e)
+#define IWebBrowserApp_Refresh(p) (p)->lpVtbl->Refresh(p)
+#define IWebBrowserApp_Refresh2(p,a) (p)->lpVtbl->Refresh2(p,a)
+#define IWebBrowserApp_Stop(p) (p)->lpVtbl->Stop(p)
+#define IWebBrowserApp_get_Application(p,a) (p)->lpVtbl->get_Application(p,a)
+#define IWebBrowserApp_get_Parent(p,a) (p)->lpVtbl->get_Parent(p,a)
+#define IWebBrowserApp_get_Container(p,a) (p)->lpVtbl->get_Container(p,a)
+#define IWebBrowserApp_get_Document(p,a) (p)->lpVtbl->get_Document(p,a)
+#define IWebBrowserApp_get_TopLevelContainer(p,a) (p)->lpVtbl->get_TopLevelContainer(p,a)
+#define IWebBrowserApp_get_Type(p,a) (p)->lpVtbl->get_Type(p,a)
+#define IWebBrowserApp_get_Left(p,a) (p)->lpVtbl->get_Left(p,a)
+#define IWebBrowserApp_put_Left(p,a) (p)->lpVtbl->put_Left(p,a)
+#define IWebBrowserApp_get_Top(p,a) (p)->lpVtbl->get_Top(p,a)
+#define IWebBrowserApp_put_Top(p,a) (p)->lpVtbl->put_Top(p,a)
+#define IWebBrowserApp_get_Width(p,a) (p)->lpVtbl->get_Width(p,a)
+#define IWebBrowserApp_put_Width(p,a) (p)->lpVtbl->put_Width(p,a)
+#define IWebBrowserApp_get_Height(p,a) (p)->lpVtbl->get_Height(p,a)
+#define IWebBrowserApp_put_Height(p,a) (p)->lpVtbl->put_Height(p,a)
+#define IWebBrowserApp_get_LocationName(p,a) (p)->lpVtbl->get_LocationName(p,a)
+#define IWebBrowserApp_get_LocationURL(p,a) (p)->lpVtbl->get_LocationURL(p,a)
+#define IWebBrowserApp_get_Busy(p,a) (p)->lpVtbl->get_Busy(p,a)
+/*** IWebBrowserApp methods ***/
+#define IWebBrowserApp_Quit(p) (p)->lpVtbl->Quit(p)
+#define IWebBrowserApp_ClientToWindow(p,a,b) (p)->lpVtbl->ClientToWindow(p,a,b)
+#define IWebBrowserApp_PutProperty(p,a,b) (p)->lpVtbl->PutProperty(p,a,b)
+#define IWebBrowserApp_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
+#define IWebBrowserApp_get_Name(p,a) (p)->lpVtbl->get_Name(p,a)
+#define IWebBrowserApp_get_HWND(p,a) (p)->lpVtbl->get_HWND(p,a)
+#define IWebBrowserApp_get_FullName(p,a) (p)->lpVtbl->get_FullName(p,a)
+#define IWebBrowserApp_get_Path(p,a) (p)->lpVtbl->get_Path(p,a)
+#define IWebBrowserApp_get_Visible(p,a) (p)->lpVtbl->get_Visible(p,a)
+#define IWebBrowserApp_put_Visible(p,a) (p)->lpVtbl->put_Visible(p,a)
+#define IWebBrowserApp_get_StatusBar(p,a) (p)->lpVtbl->get_StatusBar(p,a)
+#define IWebBrowserApp_put_StatusBar(p,a) (p)->lpVtbl->put_StatusBar(p,a)
+#define IWebBrowserApp_get_StatusText(p,a) (p)->lpVtbl->get_StatusText(p,a)
+#define IWebBrowserApp_put_StatusText(p,a) (p)->lpVtbl->put_StatusText(p,a)
+#define IWebBrowserApp_get_ToolBar(p,a) (p)->lpVtbl->get_ToolBar(p,a)
+#define IWebBrowserApp_put_ToolBar(p,a) (p)->lpVtbl->put_ToolBar(p,a)
+#define IWebBrowserApp_get_MenuBar(p,a) (p)->lpVtbl->get_MenuBar(p,a)
+#define IWebBrowserApp_put_MenuBar(p,a) (p)->lpVtbl->put_MenuBar(p,a)
+#define IWebBrowserApp_get_FullScreen(p,a) (p)->lpVtbl->get_FullScreen(p,a)
+#define IWebBrowserApp_put_FullScreen(p,a) (p)->lpVtbl->put_FullScreen(p,a)
+
+#endif
+
+#define IWebBrowserApp_METHODS \
+    ICOM_MSVTABLE_COMPAT_FIELDS \
+    /*** IUnknown methods ***/ \
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
+    STDMETHOD_(ULONG,Release)(THIS) PURE; \
+    /*** IDispatch methods ***/ \
+    STDMETHOD_(HRESULT,GetTypeInfoCount)(THIS_ UINT* pctinfo) PURE; \
+    STDMETHOD_(HRESULT,GetTypeInfo)(THIS_ UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) PURE; \
+    STDMETHOD_(HRESULT,GetIDsOfNames)(THIS_ REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgDispId) PURE; \
+    STDMETHOD_(HRESULT,Invoke)(THIS_ DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) PURE; \
+    /*** IWebBrowser methods ***/ \
+    STDMETHOD_(HRESULT,GoBack)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GoForward)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GoHome)(THIS) PURE; \
+    STDMETHOD_(HRESULT,GoSearch)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Navigate)(THIS_ BSTR URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers) PURE; \
+    STDMETHOD_(HRESULT,Refresh)(THIS) PURE; \
+    STDMETHOD_(HRESULT,Refresh2)(THIS_ VARIANT* Level) PURE; \
+    STDMETHOD_(HRESULT,Stop)(THIS) PURE; \
+    STDMETHOD_(HRESULT,get_Application)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_Parent)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_Container)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_Document)(THIS_ IDispatch** ppDisp) PURE; \
+    STDMETHOD_(HRESULT,get_TopLevelContainer)(THIS_ VARIANT_BOOL* pBool) PURE; \
+    STDMETHOD_(HRESULT,get_Type)(THIS_ BSTR* Type) PURE; \
+    STDMETHOD_(HRESULT,get_Left)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Left)(THIS_ long Left) PURE; \
+    STDMETHOD_(HRESULT,get_Top)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Top)(THIS_ long Top) PURE; \
+    STDMETHOD_(HRESULT,get_Width)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Width)(THIS_ long Width) PURE; \
+    STDMETHOD_(HRESULT,get_Height)(THIS_ long* pl) PURE; \
+    STDMETHOD_(HRESULT,put_Height)(THIS_ long Height) PURE; \
+    STDMETHOD_(HRESULT,get_LocationName)(THIS_ BSTR* LocationName) PURE; \
+    STDMETHOD_(HRESULT,get_LocationURL)(THIS_ BSTR* LocationURL) PURE; \
+    STDMETHOD_(HRESULT,get_Busy)(THIS_ VARIANT_BOOL* pBool) PURE; \
+    /*** IWebBrowserApp methods ***/ \
+    STDMETHOD_(HRESULT,Quit)(THIS) PURE; \
+    STDMETHOD_(HRESULT,ClientToWindow)(THIS_ int* pcx, int* pcy) PURE; \
+    STDMETHOD_(HRESULT,PutProperty)(THIS_ BSTR szProperty, VARIANT vtValue) PURE; \
+    STDMETHOD_(HRESULT,GetProperty)(THIS_ BSTR szProperty, VARIANT* pvtValue) PURE; \
+    STDMETHOD_(HRESULT,get_Name)(THIS_ BSTR* Name) PURE; \
+    STDMETHOD_(HRESULT,get_HWND)(THIS_ long* pHWND) PURE; \
+    STDMETHOD_(HRESULT,get_FullName)(THIS_ BSTR* FullName) PURE; \
+    STDMETHOD_(HRESULT,get_Path)(THIS_ BSTR* Path) PURE; \
+    STDMETHOD_(HRESULT,get_Visible)(THIS_ VARIANT_BOOL* pBool) PURE; \
+    STDMETHOD_(HRESULT,put_Visible)(THIS_ VARIANT_BOOL Value) PURE; \
+    STDMETHOD_(HRESULT,get_StatusBar)(THIS_ VARIANT_BOOL* pBool) PURE; \
+    STDMETHOD_(HRESULT,put_StatusBar)(THIS_ VARIANT_BOOL Value) PURE; \
+    STDMETHOD_(HRESULT,get_StatusText)(THIS_ BSTR* StatusText) PURE; \
+    STDMETHOD_(HRESULT,put_StatusText)(THIS_ BSTR StatusText) PURE; \
+    STDMETHOD_(HRESULT,get_ToolBar)(THIS_ int* Value) PURE; \
+    STDMETHOD_(HRESULT,put_ToolBar)(THIS_ int Value) PURE; \
+    STDMETHOD_(HRESULT,get_MenuBar)(THIS_ VARIANT_BOOL* Value) PURE; \
+    STDMETHOD_(HRESULT,put_MenuBar)(THIS_ VARIANT_BOOL Value) PURE; \
+    STDMETHOD_(HRESULT,get_FullScreen)(THIS_ VARIANT_BOOL* pbFullScreen) PURE; \
+    STDMETHOD_(HRESULT,put_FullScreen)(THIS_ VARIANT_BOOL bFullScreen) PURE;
+
+HRESULT CALLBACK IWebBrowserApp_Quit_Proxy(
+    IWebBrowserApp* This);
+void __RPC_STUB IWebBrowserApp_Quit_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_ClientToWindow_Proxy(
+    IWebBrowserApp* This,
+    int* pcx,
+    int* pcy);
+void __RPC_STUB IWebBrowserApp_ClientToWindow_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_PutProperty_Proxy(
+    IWebBrowserApp* This,
+    BSTR szProperty,
+    VARIANT vtValue);
+void __RPC_STUB IWebBrowserApp_PutProperty_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_GetProperty_Proxy(
+    IWebBrowserApp* This,
+    BSTR szProperty,
+    VARIANT* pvtValue);
+void __RPC_STUB IWebBrowserApp_GetProperty_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_Name_Proxy(
+    IWebBrowserApp* This,
+    BSTR* Name);
+void __RPC_STUB IWebBrowserApp_get_Name_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_HWND_Proxy(
+    IWebBrowserApp* This,
+    long* pHWND);
+void __RPC_STUB IWebBrowserApp_get_HWND_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_FullName_Proxy(
+    IWebBrowserApp* This,
+    BSTR* FullName);
+void __RPC_STUB IWebBrowserApp_get_FullName_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_Path_Proxy(
+    IWebBrowserApp* This,
+    BSTR* Path);
+void __RPC_STUB IWebBrowserApp_get_Path_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_Visible_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL* pBool);
+void __RPC_STUB IWebBrowserApp_get_Visible_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_put_Visible_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowserApp_put_Visible_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_StatusBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL* pBool);
+void __RPC_STUB IWebBrowserApp_get_StatusBar_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_put_StatusBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowserApp_put_StatusBar_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_StatusText_Proxy(
+    IWebBrowserApp* This,
+    BSTR* StatusText);
+void __RPC_STUB IWebBrowserApp_get_StatusText_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_put_StatusText_Proxy(
+    IWebBrowserApp* This,
+    BSTR StatusText);
+void __RPC_STUB IWebBrowserApp_put_StatusText_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_ToolBar_Proxy(
+    IWebBrowserApp* This,
+    int* Value);
+void __RPC_STUB IWebBrowserApp_get_ToolBar_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_put_ToolBar_Proxy(
+    IWebBrowserApp* This,
+    int Value);
+void __RPC_STUB IWebBrowserApp_put_ToolBar_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_MenuBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL* Value);
+void __RPC_STUB IWebBrowserApp_get_MenuBar_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_put_MenuBar_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL Value);
+void __RPC_STUB IWebBrowserApp_put_MenuBar_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_get_FullScreen_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL* pbFullScreen);
+void __RPC_STUB IWebBrowserApp_get_FullScreen_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT CALLBACK IWebBrowserApp_put_FullScreen_Proxy(
+    IWebBrowserApp* This,
+    VARIANT_BOOL bFullScreen);
+void __RPC_STUB IWebBrowserApp_put_FullScreen_Stub(
+    struct IRpcStubBuffer* This,
+    struct IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWebBrowserApp_INTERFACE_DEFINED__ */
+
+DEFINE_GUID(CLSID_WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9, 0x6b, 0x00, 0xc0, 0x4f, 0xd7, 0x05, 0xa2);
+#ifdef __cplusplus
+}
+#endif
+#endif /* __WIDL_EXDISP_H */
diff --git a/include/exdisp.idl b/include/exdisp.idl
new file mode 100644
index 00000000000..34f3d418ee3
--- /dev/null
+++ b/include/exdisp.idl
@@ -0,0 +1,121 @@
+/*
+ * Defines the COM interfaces and APIs related to the IE Web browser
+ *
+ * Copyright (C) 2001 John R. Sheets (for CodeWeavers)
+ * Copyright (C) 2003 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+import "ocidl.idl";
+import "docobj.idl";
+
+
+/*****************************************************************************
+ * IWebBrowser interface
+ */
+[
+    object,
+    oleautomation,
+    uuid(eab22ac1-30c1-11cf-a7eb-0000c05bae0b)
+]
+interface IWebBrowser : IDispatch
+{
+    typedef enum BrowserNavConstants
+    {
+        navOpenInNewWindow   = 0x1,
+        navNoHistory         = 0x2,
+        navNoReadFromCache   = 0x4,
+        navNoWriteToCache    = 0x8,
+        navAllowAutosearch   = 0x10,
+        navBrowserBar        = 0x20,
+        navHyperlink         = 0x40,
+        navEnforceRestricted = 0x80
+    } BrowserNavConstants;
+
+    typedef enum RefreshConstants
+    {
+        REFRESH_NORMAL     = 0,
+        REFRESH_IFEXPIRED  = 1,
+        REFRESH_COMPLETELY = 3
+    } RefreshConstants;
+
+    HRESULT GoBack();
+    HRESULT GoForward();
+    HRESULT GoHome();
+    HRESULT GoSearch();
+    HRESULT Navigate(
+        [in] BSTR URL,
+        [in] VARIANT *Flags,
+        [in] VARIANT *TargetFrameName,
+        [in] VARIANT *PostData,
+        [in] VARIANT *Headers);
+    HRESULT Refresh();
+    HRESULT Refresh2( [in] VARIANT *Level );
+    HRESULT Stop();
+    HRESULT get_Application([out] IDispatch** ppDisp);
+    HRESULT get_Parent([out] IDispatch** ppDisp);
+    HRESULT get_Container([out] IDispatch** ppDisp);
+    HRESULT get_Document([out] IDispatch** ppDisp);
+    HRESULT get_TopLevelContainer([out] VARIANT_BOOL* pBool);
+    HRESULT get_Type([out] BSTR* Type);
+    HRESULT get_Left([out] long *pl);
+    HRESULT put_Left([in] long Left);
+    HRESULT get_Top([out] long *pl);
+    HRESULT put_Top([in] long Top);
+    HRESULT get_Width([out] long *pl);
+    HRESULT put_Width([in] long Width);
+    HRESULT get_Height([out] long *pl);
+    HRESULT put_Height([in] long Height);
+    HRESULT get_LocationName([out] BSTR *LocationName);
+    HRESULT get_LocationURL([out] BSTR * LocationURL);
+    HRESULT get_Busy([out] VARIANT_BOOL *pBool);
+}
+
+
+/*****************************************************************************
+ * IWebBrowserApp interface
+ */
+[
+    object,
+    oleautomation,
+    uuid(0002df05-0000-0000-c000-000000000046)
+]
+interface IWebBrowserApp : IWebBrowser
+{
+    HRESULT Quit();
+    HRESULT ClientToWindow([in,out] int* pcx, [in,out] int* pcy);
+    HRESULT PutProperty([in] BSTR szProperty, [in] VARIANT vtValue);
+    HRESULT GetProperty([in] BSTR szProperty, [out] VARIANT *pvtValue);
+    HRESULT get_Name([out] BSTR* Name);
+    HRESULT get_HWND([out] long *pHWND);
+    HRESULT get_FullName([out] BSTR* FullName);
+    HRESULT get_Path([out] BSTR* Path);
+    HRESULT get_Visible([out] VARIANT_BOOL* pBool);
+    HRESULT put_Visible([in] VARIANT_BOOL Value);
+    HRESULT get_StatusBar([out] VARIANT_BOOL* pBool);
+    HRESULT put_StatusBar([in] VARIANT_BOOL Value);
+    HRESULT get_StatusText([out] BSTR *StatusText);
+    HRESULT put_StatusText([in] BSTR StatusText);
+    HRESULT get_ToolBar([out] int * Value);
+    HRESULT put_ToolBar([in] int Value);
+    HRESULT get_MenuBar([out] VARIANT_BOOL * Value);
+    HRESULT put_MenuBar([in] VARIANT_BOOL Value);
+    HRESULT get_FullScreen([out] VARIANT_BOOL * pbFullScreen);
+    HRESULT put_FullScreen([in] VARIANT_BOOL bFullScreen);
+}
+
+/* FIXME */
+cpp_quote("DEFINE_GUID(CLSID_WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9, 0x6b, 0x00, 0xc0, 0x4f, 0xd7, 0x05, 0xa2);")
diff --git a/include/wine/obj_webbrowser.h b/include/wine/obj_webbrowser.h
deleted file mode 100644
index 65886790183..00000000000
--- a/include/wine/obj_webbrowser.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Defines the COM interfaces and APIs related to the IE Web browser control
- *
- * Copyright 2001 John R. Sheets (for CodeWeavers)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_WINE_OBJ_WEBBROWSER_H
-#define __WINE_WINE_OBJ_WEBBROWSER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-
-/*****************************************************************************
- * Predeclare the interfaces and class IDs
- */
-DEFINE_GUID(IID_IWebBrowser, 0xeab22ac1, 0x30c1, 0x11cf, 0xa7, 0xeb, 0x00, 0x00, 0xc0, 0x5b, 0xae, 0x0b);
-typedef struct IWebBrowser IWebBrowser, *LPWEBBROWSER;
-
-DEFINE_GUID(CLSID_WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9, 0x6b, 0x00, 0xc0, 0x4f, 0xd7, 0x05, 0xa2);
-
-DEFINE_GUID(IID_IWebBrowserApp, 0x0002df05, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
-typedef struct IWebBrowserApp IWebBrowserApp, *LPWEBBROWSERAPP;
-
-/*****************************************************************************
- * IWebBrowser* related typedefs
- */
-
-typedef enum BrowserNavConstants
-{
-    navOpenInNewWindow   = 0x1,
-    navNoHistory         = 0x2,
-    navNoReadFromCache   = 0x4,
-    navNoWriteToCache    = 0x8,
-    navAllowAutosearch   = 0x10,
-    navBrowserBar        = 0x20,
-    navHyperlink         = 0x40,
-    navEnforceRestricted = 0x80
-} BrowserNavConstants;
-
-typedef enum RefreshConstants
-{
-    REFRESH_NORMAL     = 0,
-    REFRESH_IFEXPIRED  = 1,
-    REFRESH_COMPLETELY = 3
-} RefreshConstants;
-
-/*****************************************************************************
- * IWebBrowser interface
- */
-#define INTERFACE IWebBrowser
-#define IWebBrowser_METHODS \
-	IDispatch_METHODS \
-	STDMETHOD(GoBack)(THIS) PURE; \
-	STDMETHOD(GoForward)(THIS) PURE; \
-	STDMETHOD(GoHome)(THIS) PURE; \
-	STDMETHOD(GoSearch)(THIS) PURE; \
-	STDMETHOD(Navigate)(THIS_ BSTR URL, VARIANT *Flags, VARIANT *TargetFrameName, \
-                            VARIANT *PostData, VARIANT *Headers) PURE; \
-	STDMETHOD(Refresh)(THIS) PURE; \
-	STDMETHOD(Refresh2)(THIS_ VARIANT *Level) PURE; \
-	STDMETHOD(Stop)(THIS) PURE; \
-	STDMETHOD(get_Application)(THIS_ void **ppDisp) PURE; \
-	STDMETHOD(get_Parent)(THIS_ void **ppDisp) PURE; \
-	STDMETHOD(get_Container)(THIS_ void **ppDisp) PURE; \
-	STDMETHOD(get_Document)(THIS_ void **ppDisp) PURE; \
-	STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT *pBool) PURE; \
-	STDMETHOD(get_Type)(THIS_ BSTR *Type) PURE; \
-	STDMETHOD(get_Left)(THIS_ long *pl) PURE; \
-	STDMETHOD(put_Left)(THIS_ long Left) PURE; \
-	STDMETHOD(get_Top)(THIS_ long *pl) PURE; \
-	STDMETHOD(put_Top)(THIS_ long Top) PURE; \
-	STDMETHOD(get_Width)(THIS_ long *pl) PURE; \
-	STDMETHOD(put_Width)(THIS_ long Width) PURE; \
-	STDMETHOD(get_Height)(THIS_ long *pl) PURE; \
-	STDMETHOD(put_Height)(THIS_ long Height) PURE; \
-	STDMETHOD(get_LocationName)(THIS_ BSTR *LocationName) PURE; \
-	STDMETHOD(get_LocationURL)(THIS_ BSTR *LocationURL) PURE; \
-	STDMETHOD(get_Busy)(THIS_ VARIANT *pBool) PURE;
-ICOM_DEFINE(IWebBrowser,IDispatch)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IWebBrowser_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IWebBrowser_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IWebBrowser_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IDispatch methods ***/
-#define IWebBrowser_GetTypeInfoCount(p,a)      (p)->lpVtbl->GetTypeInfoCount(p,a)
-#define IWebBrowser_GetTypeInfo(p,a,b,c)       (p)->lpVtbl->GetTypeInfo(p,a,b,c)
-#define IWebBrowser_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
-#define IWebBrowser_Invoke(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
-/*** IWebBrowser methods ***/
-#define IWebBrowser_GoBack(p,a)      (p)->lpVtbl->GoBack(p,a)
-#define IWebBrowser_GoForward(p,a)      (p)->lpVtbl->GoForward(p,a)
-#define IWebBrowser_GoHome(p,a)      (p)->lpVtbl->GoHome(p,a)
-#define IWebBrowser_GoSearch(p,a)      (p)->lpVtbl->GoSearch(p,a)
-#define IWebBrowser_Navigate(p,a)      (p)->lpVtbl->Navigate(p,a)
-#define IWebBrowser_Refresh(p,a)      (p)->lpVtbl->Refresh(p,a)
-#define IWebBrowser_Refresh2(p,a)      (p)->lpVtbl->Refresh2(p,a)
-#define IWebBrowser_Stop(p,a)      (p)->lpVtbl->Stop(p,a)
-#define IWebBrowser_get_Application(p,a)      (p)->lpVtbl->get_Application(p,a)
-#define IWebBrowser_get_Parent(p,a)      (p)->lpVtbl->get_Parent(p,a)
-#define IWebBrowser_get_Container(p,a)      (p)->lpVtbl->get_Container(p,a)
-#define IWebBrowser_get_Document(p,a)      (p)->lpVtbl->get_Document(p,a)
-#define IWebBrowser_get_TopLevelContainer(p,a)      (p)->lpVtbl->get_TopLevelContainer(p,a)
-#define IWebBrowser_get_Type(p,a)      (p)->lpVtbl->get_Type(p,a)
-#define IWebBrowser_get_Left(p,a)      (p)->lpVtbl->get_Left(p,a)
-#define IWebBrowser_put_Left(p,a)      (p)->lpVtbl->put_Left(p,a)
-#define IWebBrowser_get_Top(p,a)      (p)->lpVtbl->get_Top(p,a)
-#define IWebBrowser_put_Top(p,a)      (p)->lpVtbl->put_Top(p,a)
-#define IWebBrowser_get_Width(p,a)      (p)->lpVtbl->get_Width(p,a)
-#define IWebBrowser_put_Width(p,a)      (p)->lpVtbl->put_Width(p,a)
-#define IWebBrowser_get_Height(p,a)      (p)->lpVtbl->get_Height(p,a)
-#define IWebBrowser_put_Height(p,a)      (p)->lpVtbl->put_Height(p,a)
-#define IWebBrowser_get_LocationName(p,a)      (p)->lpVtbl->get_LocationName(p,a)
-#define IWebBrowser_get_LocationURL(p,a)      (p)->lpVtbl->get_LocationURL(p,a)
-#define IWebBrowser_get_Busy(p,a)      (p)->lpVtbl->get_Busy(p,a)
-#endif
-
-#define INTERFACE IWebBrowserApp
-#define IWebBrowserApp_METHODS \
-    IWebBrowser_METHODS \
-    STDMETHOD(Quit)(THIS) PURE; \
-    STDMETHOD(ClientToWindow)(THIS_ int *pcx,int *pcy) PURE; \
-    STDMETHOD(PutProperty)(THIS_ BSTR szProperty,VARIANT vtValue) PURE; \
-    STDMETHOD(GetProperty)(THIS_ BSTR szProperty,VARIANT *pvtValue) PURE; \
-    STDMETHOD(get_Name)(THIS_ BSTR *Name) PURE; \
-    STDMETHOD(get_HWND)(THIS_ long *pHWND) PURE; \
-    STDMETHOD(get_FullName)(THIS_ BSTR *FullName) PURE; \
-    STDMETHOD(get_Path)(THIS_ BSTR *Path) PURE; \
-    STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL *pBool) PURE; \
-    STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL Value) PURE; \
-    STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL *pBool) PURE; \
-    STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL Value) PURE; \
-    STDMETHOD(get_StatusText)(THIS_ BSTR *StatusText) PURE; \
-    STDMETHOD(put_StatusText)(THIS_ BSTR StatusText) PURE; \
-    STDMETHOD(get_ToolBar)(THIS_ int *Value) PURE; \
-    STDMETHOD(put_ToolBar)(THIS_ int Value) PURE; \
-    STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL *Value) PURE; \
-    STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL Value) PURE; \
-    STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL *pbFullScreen) PURE; \
-    STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL bFullScreen) PURE;
-ICOM_DEFINE(IWebBrowserApp,IWebBrowser)
-#undef INTERFACE
-
-#ifdef COBJMACROS
-/*** IUnknown methods ***/
-#define IWebBrowserApp_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IWebBrowserApp_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IWebBrowserApp_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IDispatch methods ***/
-#define IWebBrowserApp_GetTypeInfoCount(p,a)      (p)->lpVtbl->GetTypeInfoCount(p,a)
-#define IWebBrowserApp_GetTypeInfo(p,a,b,c)       (p)->lpVtbl->GetTypeInfo(p,a,b,c)
-#define IWebBrowserApp_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
-#define IWebBrowserApp_Invoke(p,a,b,c,d,e,f,g,h)  (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
-/*** IWebBrowser methods ***/
-#define IWebBrowserApp_GoBack(p,a)                (p)->lpVtbl->GoBack(p,a)
-#define IWebBrowserApp_GoForward(p,a)             (p)->lpVtbl->GoForward(p,a)
-#define IWebBrowserApp_GoHome(p,a)                (p)->lpVtbl->GoHome(p,a)
-#define IWebBrowserApp_GoSearch(p,a)              (p)->lpVtbl->GoSearch(p,a)
-#define IWebBrowserApp_Navigate(p,a)              (p)->lpVtbl->Navigate(p,a)
-#define IWebBrowserApp_Refresh(p,a)               (p)->lpVtbl->Refresh(p,a)
-#define IWebBrowserApp_Refresh2(p,a)              (p)->lpVtbl->Refresh2(p,a)
-#define IWebBrowserApp_Stop(p,a)                  (p)->lpVtbl->Stop(p,a)
-#define IWebBrowserApp_get_Application(p,a)       (p)->lpVtbl->get_Application(p,a)
-#define IWebBrowserApp_get_Parent(p,a)            (p)->lpVtbl->get_Parent(p,a)
-#define IWebBrowserApp_get_Container(p,a)         (p)->lpVtbl->get_Container(p,a)
-#define IWebBrowserApp_get_Document(p,a)          (p)->lpVtbl->get_Document(p,a)
-#define IWebBrowserApp_get_TopLevelContainer(p,a) (p)->lpVtbl->get_TopLevelContainer(p,a)
-#define IWebBrowserApp_get_Type(p,a)              (p)->lpVtbl->get_Type(p,a)
-#define IWebBrowserApp_get_Left(p,a)              (p)->lpVtbl->get_Left(p,a)
-#define IWebBrowserApp_put_Left(p,a)              (p)->lpVtbl->put_Left(p,a)
-#define IWebBrowserApp_get_Top(p,a)               (p)->lpVtbl->get_Top(p,a)
-#define IWebBrowserApp_put_Top(p,a)               (p)->lpVtbl->put_Top(p,a)
-#define IWebBrowserApp_get_Width(p,a)             (p)->lpVtbl->get_Width(p,a)
-#define IWebBrowserApp_put_Width(p,a)             (p)->lpVtbl->put_Width(p,a)
-#define IWebBrowserApp_get_Height(p,a)            (p)->lpVtbl->get_Height(p,a)
-#define IWebBrowserApp_put_Height(p,a)            (p)->lpVtbl->put_Height(p,a)
-#define IWebBrowserApp_get_LocationName(p,a)      (p)->lpVtbl->get_LocationName(p,a)
-#define IWebBrowserApp_get_LocationURL(p,a)       (p)->lpVtbl->get_LocationURL(p,a)
-#define IWebBrowserApp_get_Busy(p,a)              (p)->lpVtbl->get_Busy(p,a)
-/*** IWebBrowserApp methods ***/
-#define IWebBrowserApp_Quit(p)                    (p)->lpVtbl->Quit(p,a)
-#define IWebBrowserApp_ClientToWindow(p,a,b)      (p)->lpVtbl->ClientToWindow(p,a,b)
-#define IWebBrowserApp_PutProperty(p,a,b)         (p)->lpVtbl->PutProperty(p,a,b)
-#define IWebBrowserApp_GetProperty(p,a,b)         (p)->lpVtbl->GetProperty(p,a,b)
-#define IWebBrowserApp_get_Name(p,a)              (p)->lpVtbl->get_Name(p,a)
-#define IWebBrowserApp_get_HWND(p,a)              (p)->lpVtbl->get_HWND(p,a)
-#define IWebBrowserApp_get_FullName(p,a)          (p)->lpVtbl->get_FullName(p,a)
-#define IWebBrowserApp_get_Path(p,a)              (p)->lpVtbl->get_Path(p,a)
-#define IWebBrowserApp_get_Visible(p,a)           (p)->lpVtbl->get_Visible(p,a)
-#define IWebBrowserApp_put_Visible(p,a)           (p)->lpVtbl->put_Visible(p,a)
-#define IWebBrowserApp_get_StatusBar(p,a)         (p)->lpVtbl->get_StatusBar(p,a)
-#define IWebBrowserApp_put_StatusBar(p,a)         (p)->lpVtbl->put_StatusBar(p,a)
-#define IWebBrowserApp_get_StatusText(p,a)        (p)->lpVtbl->get_StatusText(p,a)
-#define IWebBrowserApp_put_StatusText(p,a)        (p)->lpVtbl->put_StatusText(p,a)
-#define IWebBrowserApp_get_ToolBar(p,a)           (p)->lpVtbl->get_ToolBar(p,a)
-#define IWebBrowserApp_put_ToolBar(p,a)           (p)->lpVtbl->put_ToolBar(p,a)
-#define IWebBrowserApp_get_MenuBar(p,a)           (p)->lpVtbl->get_MenuBar(p,a)
-#define IWebBrowserApp_put_MenuBar(p,a)           (p)->lpVtbl->put_MenuBar(p,a)
-#define IWebBrowserApp_get_FullScreen(p,a)        (p)->lpVtbl->get_FullScreen(p,a)
-#define IWebBrowserApp_put_FullScreen(p,a)        (p)->lpVtbl->put_FullScreen(p,a)
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif /* __WINE_WINE_OBJ_WEBBROWSER_H */
diff --git a/libs/uuid/uuid.c b/libs/uuid/uuid.c
index 86351e0f7dc..c38cc9a88c8 100644
--- a/libs/uuid/uuid.c
+++ b/libs/uuid/uuid.c
@@ -42,6 +42,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
 #include "ocidl.h"
 
 #include "docobj.h"
+#include "exdisp.h"
 
 #include "shlguid.h"
 #include "shlobj.h"
@@ -52,8 +53,6 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
 
 /* other GUIDs */
 
-#include "wine/obj_webbrowser.h"
-
 #include "vfw.h"
 
 #include "uuids.h"
-- 
GitLab