0

こんにちは、お読みいただきありがとうございます。

キオスクスタイルの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 に答える