2009-04-20 11 views
6

ボタンを押したときに画面にサウンドと画像を表示する小さなプログラムを作成しました。私の小さな子供の一人が私のラップに這い回って、もちろん、ランダムに鍵を叩き始めると、私はいつもそれを始める。Windowsキーをc#(wpf)でキャプチャする

2つのキー以外は正常に動作します.1つはON/OFFスイッチ、もう1つはWindowsキーです。 (私が信じるCTRL-ESCの同等物)私はそれが押されたときにそれを傍受することができるが、スタートメニューが表示された後である。

私が使用するイベントがUIElement.KeyDownであると私は今のところ思い付いた可能性があり、すべては次のとおりです。(eはKeyEventArgsある)

  if (e.Key == Key.LWin) e.Handled = true; 

が、スタート画面よりは、すでに私は怖い示しています。

私は既に1つの答えを持っていますが、wpfサポートがあるかどうかを知りたいのですか?

メインオン/オフスイッチのプログラミングができない可能性がありますか?それ以外の場合は、歓迎もあります。

答えて

17

keyboard hookが必要です。残念ながら、これはP/Invokeで行う必要があります。マネージコードで行うことはできません。

チェックアウトBaby Smash! Scott Hanselman。また、類似したCodeProjectの、上ShapeShowをチェックアウトhttps://github.com/shanselman/babysmash

http://www.codeplex.com/babysmashのGithubでコードプレックス上でホストされています。

左Windowsキー:System.Windows.Input.Key

+0

これは間違いなくtxの答えです。しかし、それはinterop、あなたが認識しているネイティブwpfサポートが必要ですか? – Peter

+0

うん。 interopが必要です。それを説明するABの答えを更新し、ShapeShowへのリンクを追加しました。 –

+0

お元気ですか、お返事ありがとうございます! (私はまだその間にbabysmashをインストールしています) – Peter

3

は、あなたが簡単な例を見ることができます下部にhttp://msdn.microsoft.com/en-us/library/system.windows.input.key(v=VS.90).aspx

を参照してください、私はあなたが探しているものだと思うが、これらの線に沿って何かであります

private void OnKeyDownHandler(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.LWin) { 
     textBlock1.Text = "You Entered: " + textBox1.Text; 
    } 
} 

例System.Windows.Input.Key.RWin:

右Windowsキー.LWin

関連する問題