Amazon

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

最近のトラックバック

無料ブログはココログ

Amazon2

« [C#] アプリケーションが64ビットで動作しているか確認する | トップページ | UbuntuServer12.04をちょっと最適化 »

2012年5月 6日 (日)

C# バックグラウンドでキー入力を取得する

★ : 簡易ランチャーの作成 その4 でもう少し修正したものを掲載してあります

フォームがアクティブでないのに、キー入力を受け取る方法について
まとめて見ます。

通常の場合ですと、フォームのKeyDownイベント等でイベントを取得するのですが、これだと
フォームがアクティブでない場合には、イベントが発生しません。
あまり無い用件だと思いますが、アクティブでなくてもあるキーを押された時に
特定の処理を実行したい時に使用できます。

今回はバックグラウンドで待機して、特定のキーが押下された場合にイベントを
発生させるクラスを作成します。

ポイントは以下です。


 ・キーの確認にuser32.dllのAPIを利用している
 ・64ビットで動作させた時の為に、戻り値をInt64で評価している


実は上記だけです。後は単純に一定間隔で指定されたキーを確認し、押下された場合に
イベントを発生させているだけです。
後はこのイベントで処理を実施すればフォームがアクティブでなくても処理が走ります。
例えば、Formでthis.Activate();と記述すれば、強制的にアクティブになります。
(イベントは別スレッドで発生しますので、フォームに何かする時は気をつけて下さい)



当初「この手の物はObserverパターンか?」と、思ったけれど…DelegateやEventは
便利ですねぇ。。。

« [C#] アプリケーションが64ビットで動作しているか確認する | トップページ | UbuntuServer12.04をちょっと最適化 »

C#」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1680410/45132509

この記事へのトラックバック一覧です: C# バックグラウンドでキー入力を取得する:

« [C#] アプリケーションが64ビットで動作しているか確認する | トップページ | UbuntuServer12.04をちょっと最適化 »