keydownイベントをプログラムが前面になくても有効にするには?


rin  2012-07-26 00:43:59  No: 143356  IP: 192.*.*.*

はじめまして。よろしくお願いします。
コマンドボタンにショートカットキーをつけたかったので、
keydownイベントを使用して、ショートカットキーを作成したのですが、
プログラムが最前面にないとショートカットキーが動きません。
ほかのプログラム(excel等)が最前面にあっても、ショートカットキーを
有効にする手段はないでしょうか?

編集 削除
YuO  2012-07-26 14:30:48  No: 143357  IP: 192.*.*.*

HOTKEYとして登録するのが簡単だと思います。
もちろん,メッセージまわりを自前で処理する必要がありますが。

MSDN: RegisterHotKey function
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646309

編集 削除
魔界の仮面弁士  2012-07-30 22:36:43  No: 143358  IP: 192.*.*.*

お使いの環境が VB6 か VB.NET か分かりませんが、VB6 ならば
下記のようにしてホットキーを登録できます。
http://www.geocities.co.jp/siliconvalley/4805/vbtips/vbtips092.htm

VB.NET ならこのあたりでしょうか。
http://dobon.net/vb/bbs/log3-34/20932.html

ただしホットキーの場合、利用できるキーの組み合わせには
制限があります。もしもホットキーでは賄えないような場合には、
DirectInput を使って拾うか、または下記の手法を検討してみてください。
http://dobon.net/vb/bbs/log3-35/21581.html

なお DirectInput の場合は、SetCooperativeLevel を呼び出す際に
DISCL_BACKGROUND を指定すれば、自アプリがアクティブでない時にも
キー入力を拾う事が出来ます。

編集 削除