2017-02-21 3 views
0

裏面のボタンをクリックするかダブルクリックすると、SurfaceペンからWindowsKey + F20/19という信号が送信され、アプリケーションでこれをキャプチャします。Windows修飾キーを押してもKeyboard.ModifiersがNoneになります

私はWindowsキーが押されたことを検出することに関してsome questionsを見ましたが、これはC#ではPInvokeなしでは不可能と思われます。

ただし、これが修正プログラムとしてWindowsキーにも当てはまるかどうかはわかりません。そうですが、確かに知りたいのですが。

ModifierKeys enumドキュメントにはWindowsキーが記載されていますが、このキーに関する特別な注意はありません。

だから私も、このコードには、メインウィンドウのOnPreviewKeyDownを有線しました:

private void MainWindow_OnPreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.SystemKey == Key.F10 && 
     e.KeyboardDevice.Modifiers.HasFlag(System.Windows.Input.ModifierKeys.Windows) 
     { 
     Console.WriteLine("Succes!"); 
    } 
} 

このコードは、私の頭の中にALT修飾キーを聴く場合は、しかし、私はWindows+F10を押すとe.KeyboardDevice.ModifiersNoneに等しいので、もし作品状態は失敗します。

紛失しているものがあるか、PInvokeルートに移動する必要がありますか?

答えて

1

次のコードは、Windows+F10を検出することができるはずです。

private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.SystemKey == Key.F10 && (Keyboard.IsKeyDown(Key.LWin) || Keyboard.IsKeyDown(Key.RWin))) 
    { 
     Console.WriteLine("Succes!"); 
    } 
} 
+0

あなたは絶対的に正しいです。 PInvokeが必要な複数のアカウントを読んでいるので、私はリンクした質問でその答えを無視しました。私の悪い:)。 –

+1

ofc、私はできる前にもう一分待たなければならなかった:) –

関連する問題