gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:14:39 26 4
gpt4 key购买 nike

<分区>

我有一个 WPF 应用程序,它将在带有触摸屏的 PC 上的自助服务终端上运行。该应用程序以全屏模式运行,以隐藏操作系统。在我的一个页面上,我有一个 WebBrowser 控件,允许用户查看某些网页(导航仅限于某些页面)。由于计算机将放置在公共(public)场所,因此我不能让用户访问操作系统。问题是,触摸屏允许右键单击 Web 浏览器,这最终会导致出现任务栏……不好……!

过去几天我一直在尝试禁用该上下文菜单,但没有成功。基本上我现在所在的位置是:

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

    [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 接口(interface)

                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; };

到目前为止,没有成功......有什么想法吗?

提前致谢。

26 4 0