非アクティブのときにキー入力を受け付ける

タグの編集
投稿者 brv(質問者)  () 投稿日時 2008/5/24 21:48:00
アプリケーションが起動していない時やフォームがアクティブでないときもキー入力を受け付けられるようにするにはどうしたらいいでしょうか?よろしくお願いします。
投稿者 brv(質問者)  () 投稿日時 2008/5/24 21:50:00
追記です。VBのバージョンは2005のAcademic Editionです。
投稿者 刈谷勇  () 投稿日時 2008/5/25 03:43:00
詳細がわからないので外していたら、すみません。 
 
>アプリケーションが起動していない時 
アプリケーションが起動していないのであれば、受け取り側もないのでは・・・? 
 
>フォームがアクティブでないとき 
これは、アクティブフォームでキーを受け取り、非アクティブの 
方の処理関数を呼び出せばいいのでは・・・
投稿者 brv(質問者)  () 投稿日時 2008/5/25 06:59:00
>アプリケーションが起動していないのであれば、受け取り側もないのでは・・・?  
たとえば Google デスクトップ はCtrlキーを二回押すと簡単に起動できますよね。あんな感じにしたいんです。 
 
>これは、アクティブフォームでキーを受け取り  
他のアプリケーションのウインドウがアクティブになっているときはどうすればいいのでしょうか? 
 
刈谷勇さん、説明が分かりにくくてすみません。ありがとうございます。
投稿者 temp  () 投稿日時 2008/5/27 01:02:00
ここらへんか? 
 
http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=7609&page=0
投稿者 魔界の仮面弁士  () 投稿日時 2008/5/27 17:14:00
「DirectInput」について調べてみてください。
投稿者 brv(質問者)  () 投稿日時 2008/6/15 00:10:00
ありがとうございます。すみませんが、今は少し勉強が忙しいので、後でじっくり拝見させていただきます。
投稿者 brv(質問者)  () 投稿日時 2008/7/2 06:24:00
ありがとうございます。結果的にはアプリケーションを起動していないとキー入力は受け取れないんですね。このサイトのどこかの「ウイルスに感染してしまいました」という記事で「ウイルスがレジストリを書き換えてWindows起動時に自分自身を起動させる」というような内容があったと思いますが、この類の方法でも同じことはできるのでしょうか?
投稿者 るきお  () 投稿日時 2008/7/2 07:29:00
>結果的にはアプリケーションを起動していないとキー入力は受け取れないんですね。 
さすがに起動していないと無理ですが、たとえば、ショートカットにホットキーを設定してOSから呼び出してもらうとか、あるいは非表示でひそかに起動しておいてキー押下に反応するということは可能です。 
 
フォーム自体はアクティブでなくても起動さえしていればキー入力は取得できます。 
そのための仕組みはいくつかありそうですが、伝統的なところでは「ホットキー」というものがあります。 
残念ながら.NET Frameworkではサポートされていないようですが、WindowsAPIを呼び出せばVBからホットキーを制御できます。 
 
未検証で申し訳ありませんが、検索すると以下のサンプルがヒットしました。どうでしょうか? 
http://smdn.invisiblefulmoon.net/ikimasshoy/dotnettips/tips025.html 
 
それから、brvさん。しばしば書き込んでいただいてありがとうございます。今後もよろしくお願いします。