C# 无法转换类型';System.Windows.Controls.WebBrowser';至';SHDocVw.DWebBrowserEvents';

C# 无法转换类型';System.Windows.Controls.WebBrowser';至';SHDocVw.DWebBrowserEvents';,c#,wpf,C#,Wpf,我从网站上看到了一个例子 在这里,他们使用的语句如下: SHDocVw.DWebBrowserEvents_Event wbEvents = (SHDocVw.DWebBrowserEvents_Event)myWebBrowser2; SHDocVw.DWebBrowserEvents2_Event wbEvents2 = (SHDocVw.DWebBrowserEvents2_Event)myWebBrowser2; 当我编译程序时,我得到以下错误。我遗漏了什么

我从网站上看到了一个例子

在这里,他们使用的语句如下:

 SHDocVw.DWebBrowserEvents_Event wbEvents = (SHDocVw.DWebBrowserEvents_Event)myWebBrowser2;
            SHDocVw.DWebBrowserEvents2_Event wbEvents2 = (SHDocVw.DWebBrowserEvents2_Event)myWebBrowser2;
当我编译程序时,我得到以下错误。我遗漏了什么吗


无法将类型“System.Windows.Controls.WebBrowser”转换为“SHDocVw.DWebBrowserEvents”

异常告诉您myWebBrowser2属于类型“System.Windows.Controls.WebBrowser”。但是,在本例中,它的类型为“SHDocVw.IWebBrowser2”。您似乎跳过了他们从WPF WebBrowser控件中提取IWebBrowser2的部分(在本例中,“myWebBrowser”是您的WebBrowser控件):

然后myWebBrowser2就可以进行交互了

[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]   
[Guid("6d5140c1-7436-11ce-8034-00aa006009fa")]  
internal interface IServiceProvider   
{
   [return: MarshalAs(UnmanagedType.IUnknown)]
   object QueryService(ref Guid guidService, ref Guid riid);
}

static readonly Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");   
...   
IServiceProvider serviceProvider = (IServiceProvider)myWebBrowser.Document;
Guid serviceGuid = SID_SWebBrowserApp;
Guid iid = typeof(SHDocVw.IWebBrowser2).GUID;
SHDocVw.IWebBrowser2 myWebBrowser2 = (SHDocVw.IWebBrowser2) serviceProvider.QueryService(ref serviceGuid, ref iid);
...