加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在WPF中禁用WebBrowser上的上下文菜单

发布时间:2020-12-15 04:28:00 所属栏目:百科 来源:网络整理
导读:参见英文答案 How to deactivate “right click” on WPF Webbrowser Control?4个 我有一个WPF应用程序,它将在带有触摸屏的PC上的自助服务终端上运行.应用程序以全屏模式运行,以隐藏操作系统.在我的一个页面上,我有一个WebBrowser控件,允许用户查看一些网页(
参见英文答案 > How to deactivate “right click” on WPF Webbrowser Control?4个
我有一个WPF应用程序,它将在带有触摸屏的PC上的自助服务终端上运行.应用程序以全屏模式运行,以隐藏操作系统.在我的一个页面上,我有一个WebBrowser控件,允许用户查看一些网页(导航仅限于某些页面).
由于计算机将被放置在公共场所,我不能让用户访问操作系统.问题是,触摸屏允许右键单击Web浏览器,最终导致任务栏出现……不好……!

我一直试图在过去几天禁用该上下文菜单而没有太大成功.基本上我现在在的地方是:

>添加了对SHDocVw.dll的COM引用以获取IWebBrowser2接口(需要禁用启动新窗口.

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

>获取IWEbBrowser2接口

IServiceProvider _serviceProvider = null;

            if (_browser.Document != null)
            {
                _serviceProvider = (IServiceProvider)_browser.Document;

                Guid _serviceGuid = SID_SWebBrowserApp;
                Guid _iid = typeof(SHDocVw.IWebBrowser2).GUID;

                SHDocVw.IWebBrowser2 _webBrowser = (SHDocVw.IWebBrowser2)_serviceProvider.QueryService(ref _serviceGuid,ref _iid);

>并尝试禁用文档上的oncontextmenu.

HTMLDocument doc = _webBrowser.Document as HTMLDocument;
                mshtml.HTMLDocumentEvents2_Event ev = doc as mshtml.HTMLDocumentEvents2_Event;

                ev.oncontextmenu += (arg) => { return false; };

到目前为止,没有成功……任何想法?

提前致谢.

解决方法

将oncontextmenu属性添加到文档正文标记对我有用.
<body oncontextmenu="return false;">

从这篇文章来看.
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/7c283faf-16c8-4b4e-a362-f292e3032abb/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读