在WebBrowser .NET CF 3.5中禁用上下文菜单

我在.NET CF 3.5中使用WebBrowser控件用于Windows CE设备应用程序,出于安全考虑,需要禁用上下文菜单。我尝试过各种各样的东西,但这些东西似乎都不适用于使用.NET CF 3.5的移动设备: 我尝试将一个pictureBox放在WebBrowser上,并将其设置为透明。不幸的是,透明度不起作用,这最终成为我浏览器上的白盒子。 我已经尝试实现一个新的自定义透明控件放在Web浏览器上,类似于此。 我已经尝试在html中编辑OnContextMenu元素,没有运气。 我已经尝试重写CreateParams来在浏览器上创建一个透明的PictureBox,这是一个解决方案。 这个在线似乎有很多解决方案,但它们似乎都不适用于使用.NET CF 3.5的Windows CE。我相信这是因为WebBrowser的实现比完整的.NET 3.5简单得多。所以我的问题是:有没有办法禁用WebBrowser控件的上下文菜单?     
已邀请:
我没有尝试过这个特定的控件,所以我不知道它是否会起作用,但你是否尝试过对浏览器控件进行子类化并拦截和丢弃导致上下文菜单首先出现的消息?如果我必须解决同样的问题,这肯定是我首先尝试的。     
如果您觉得自己不够掌管托管的WebBrowser,那么通过P /从C#调用它实际上使用本机HTML Control API(不是IWebBrowser2等)并不难。 如果你这样走,那么你也可以 拦截上下文菜单通知NM_CONTEXTMENU,当上下文菜单即将显示时,该通知将被发送到HTML控件主机/父级,并且不允许它继续使用默认的窗口消息处理程序 要么 通过向FISSE发送DTM_ENABLECONTEXTMENU来完全禁用上下文菜单。 去过那里,做到了,两者都有效。 编辑: 在这种情况下,有三种可能的复杂程度: 除非使用窗口样式HS_CONTEXTMENU创建HTML控件,否则默认情况下将禁用上下文菜单。因此,如果你想做的就是禁用它,那么本机CreateWindowEx是P / Invoke唯一需要的本机Win32 API函数。 另一方面,如果您确实想要在运行时启用和禁用上下文菜单,则可以使用DTM_ENABLECONTEXTMENU和TRUE / FALSE进行P / Invoke SendMessage。 最后,如果你想要最大程度地控制菜单或者在HTML控件想要显示菜单时做一些完全随意的事情,你需要P / Invoke SetWindowLong子类化父级并听取NM_CONTEXTMENU并决定是否继续显示菜单与否或完全不做其他事情。     
这些可能的答案都不起作用。所以我放弃了尝试隐藏上下文菜单,只是为Navigating事件添加了一个事件处理程序,如果它与我最初发送给它的URL不同,则取消导航。它仍然显示上下文菜单,但点击任何内容都不会将其发送到另一个页面
void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) {
    //don't let users go anywhere else
    if (e.Url != webBrowser1.Url) {
        e.Cancel = true;
    }
}
    
WebBrowser控件在.NET CF中的实现是否不包含属性
IsWebBrowserContextMenuEnabled
?     
我只是在寻找其他东西时遇到了这个非常有趣的博客文章。我确定看起来它解决了上下文菜单问题(警告:我根本没有测试过这个)。     

要回复问题请先登录注册