もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
アプリで、キー入力を監視したい。
監視したいが、アプリの起動中、ずっとタイマー回しっぱなしでキー入力を監視し続けるのは、違う気がする。
なにか、良い方法ないか探してみる。
やったこと
メインスレッドの空き時間(Idle時間)を使って、キーを監視してみる。
idle時間は、ComponentDispatcher.ThreadIdle
イベントを使う。
キー入力は、Keyboard.IsKeyDown()
を使う。
サンプルコード
private void Window_Loaded(object sender, RoutedEventArgs e) { ComponentDispatcher.ThreadIdle += new System.EventHandler(ComponentDispatcher_ThreadIdle); } void ComponentDispatcher_ThreadIdle(object sender, EventArgs e) { if (Keyboard.IsKeyDown(Key.A)) { Debug.WriteLine("Aキーがクリックされました"); } }
参考
Getting inactivity/idle time in a WPF application
https://stackoverflow.com/questions/1111615/getting-inactivity-idle-time-in-a-wpf-application