2011-08-08 38 views
2

我看到的網站爲例 http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser%28v=VS.90%29.aspx不能鍵入「System.Windows.Controls.WebBrowser」轉換爲「SHDocVw.DWebBrowserEvents」

在這裏,他們正在使用如下語句:

SHDocVw.DWebBrowserEvents_Event wbEvents = (SHDocVw.DWebBrowserEvents_Event)myWebBrowser2; 
      SHDocVw.DWebBrowserEvents2_Event wbEvents2 = (SHDocVw.DWebBrowserEvents2_Event)myWebBrowser2; 

當我編譯程序,我收到以下錯誤。我錯過了什麼?

型「System.Windows.Controls.WebBrowser」無法轉換爲「SHDocVw.DWebBrowserEvents」

回答

3

的異常告訴你,你myWebBrowser2類型爲「System.Windows.Controls.WebBrowser」的。然而在這個例子中,它的類型是'SHDocVw.IWebBrowser2'。看來你跳過他們從WPF WebBrowser控件中提取的IWebBrowser2的一部分(在這個例子中「myWebBrowser」是你的web瀏覽器控件):

[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); 
... 

然後myWebBrowser2準備的互動。

相關問題