gpt4 book ai didi

c# - 无法将类型 'System.Windows.Controls.WebBrowser' 转换为 'SHDocVw.DWebBrowserEvents'

转载 作者:行者123 更新时间:2023-11-30 15:43:08 26 4
gpt4 key购买 nike

我从网站上看到一个例子 http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser%28v=VS.90%29.aspx

他们在这里使用了这样的语句:

 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 控件):

[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 就可以进行交互了。

关于c# - 无法将类型 'System.Windows.Controls.WebBrowser' 转换为 'SHDocVw.DWebBrowserEvents',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com