参见英文答案 >
How to deactivate “right click” on WPF Webbrowser Control?4个
我有一个WPF应用程序,它将在带有触摸屏的PC上的自助服务终端上运行.应用程序以全屏模式运行,以隐藏操作系统.在我的一个页面上,我有一个Webbrowser控件,允许用户查看一些网页(导航仅限于某些页面).
由于计算机将被放置在公共场所,我不能让用户访问操作系统.问题是,触摸屏允许右键单击Web浏览器,最终导致任务栏出现……不好……!
我有一个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");
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; };
到目前为止,没有成功……任何想法?
提前致谢.