有没有办法使用 Wpf (C#) 更改 Web 浏览器的上下文菜单
Posted
技术标签:
【中文标题】有没有办法使用 Wpf (C#) 更改 Web 浏览器的上下文菜单【英文标题】:Is there any way to change the Context Menu of a Web browser using Wpf (C#) 【发布时间】:2010-09-19 07:42:05 【问题描述】:我想更改 Web 浏览器控件中提供的默认上下文菜单中的菜单项。我已经尝试过:webbrowser.contextmenu = mycontextmenu。 没有改变。有没有办法做到这一点?
【问题讨论】:
看看***.com/questions/31411328/… 【参考方案1】:简短的回答是否定的。详情请见this thread。
【讨论】:
【参考方案2】:简短的回答是肯定的。
见this article on codeproject。
Here is another (shorter) article on codeproject
【讨论】:
那篇文章都是WinForms。你有可以在 WPF 中工作的代码吗? 它应该在 WinForms 和 WPF 中工作,因为它依赖于自定义 mshtml。注意:在我的回答中添加了指向另一篇文章的新链接。【参考方案3】:我正在尝试做同样的事情。我阅读了大约 5 篇 codeproject 文章(顺便说一下,它们有点旧),但无法正确理解 COM 互操作部分。可能是因为我不会用 C++ 编程。
但后来我发现这个页面http://www.pinvoke.net/default.aspx/Interfaces/IDocHostUIHandler.html 似乎很有希望。它包含一个声称提供您想要的功能的 c# 接口。但是我仍然无法让它一直工作,所以如果其他人可以为这个答案做出贡献,我将不胜感激。
由于我不知道您对 c# 有多熟悉(顺便说一句,我几乎是个菜鸟),所以我将在此处发布一些额外的步骤,使用 VS2008。添加 Microsoft.mshtml 作为对您项目的引用,创建一个新的 c# 界面,并在界面顶部添加额外的 3 个“使用”语句。
using System.Windows;
using System.Runtime.InteropServices;
using mshtml;
并粘贴接口定义的代码。然后让 WebBrowser 容器实现这个接口和所有的方法。这就是我到现在为止的距离。我仍在寻找将浏览器事件重定向到容器的方法。
【讨论】:
【参考方案4】:答案 - 是的。 webbrowser 控件中有一个设置: .IsWebBrowserContextMenuEnabled = false;
将此设置为 false 将禁用 IE 上下文菜单,允许您设置的任何一个来统治根。简单的..
【讨论】:
以上是关于有没有办法使用 Wpf (C#) 更改 Web 浏览器的上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章