0

您好,感谢您的阅读。

我在 Kiosk 风格的 WPF 应用程序中有一个嵌入式 WebBrowser,我试图阻止用户使用 Ctrl + O 或 Ctrl + N 键盘快捷键来绕过我限制他们访问的页面。

这是我的代码,它位于应用程序的最顶部窗口中:

// This is in the constructor of the window under InitializeComponent();
AddHandler(Keyboard.PreviewKeyDownEvent, (System.Windows.Input.KeyEventHandler)HandleKeyDownEvent);

private void HandleKeyDownEvent(object sender, System.Windows.Input.KeyEventArgs e)
{
   Key key = (e.Key == Key.System) ? e.SystemKey : e.Key;
   if(e.KeyboardDevice.Modifiers == ModifierKeys.Control)
   {
      switch(key)
      {
         case Key.N:
         case Key.O:
         case Key.P:
            MessageBox.Show("BOOM");
            break;
      }
   }
}

当我按下 Ctrl + N 时,事件处理程序正确触发,但 e.Key 是 Key.Control 而不是 Key.N。当按下 Ctrl 按钮时(如预期的那样),事件似乎立即触发,但未能捕获 N 键。我尝试过使用 Keyboard.IsKeyDown(Key.N) 并且它也返回 false。

欢迎任何意见或建议。

谢谢,

亚当

编辑:我还尝试在浏览器本身上使用 NewWindow、NewWindow2 和 NewWindow3 事件来阻止新窗口。那里也没有运气。

4

1 回答 1

0

好吧,我感觉自己就像一个完全麻木的头骨!事实证明它就像添加以下代码行一样简单。我希望这可以帮助其他可能像我一样尝试非常复杂的解决方案的人。

     browser.WebBrowserShortcutsEnabled = false;
于 2012-10-24T18:32:16.420 回答