Fil*_*uel 6 .net c# wpf com-interop
我有一个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");
Run Code Online (Sandbox Code Playgroud)获取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);
Run Code Online (Sandbox Code Playgroud)并尝试禁用文档上的oncontextmenu.
HTMLDocument doc = _webBrowser.Document as HTMLDocument;
mshtml.HTMLDocumentEvents2_Event ev = doc as mshtml.HTMLDocumentEvents2_Event;
ev.oncontextmenu += (arg) => { return false; };
Run Code Online (Sandbox Code Playgroud)到目前为止,没有成功......任何想法?
提前致谢.
小智 7
将oncontextmenu属性添加到文档正文标记对我有用.
<body oncontextmenu="return false;">
Run Code Online (Sandbox Code Playgroud)
从这篇文章来看. http://social.msdn.microsoft.com/forums/en-US/wpf/thread/7c283faf-16c8-4b4e-a362-f292e3032abb/
为什么不使用WPF WebBrowser 控件?它有许多触摸事件,您可以捕获和处理这些事件,并有可能阻止上下文菜单弹出。或者您可以提供自己的上下文菜单供浏览器使用。
预览事件位于页面下方,可用于拦截导致弹出上下文菜单的事件。
| 归档时间: |
|
| 查看次数: |
9927 次 |
| 最近记录: |