こんにちは、お読みいただきありがとうございます。
キオスクスタイルの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イベントを使用して、新しいウィンドウを防止しようとしました。そこにも運がない。