• ベストアンサー

VB.NETでフォームがない状態でキー入力を受け付けたいです。

VB.NETなのですが、Visible=Falseでフォームを見えないようにして 他のアプリを使用中でもキー入力を受け付けて、 そのキーに応じた動作をするプログラムを考えているのですが、 フォームがない状態でキーを受け付けるということはできるでしょうか? 大まかな方法でもかまいませんので、教えて頂きたいです。 よろしくおねがいします。m(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • shobon
  • ベストアンサー率66% (14/21)
回答No.3

Windows APIのGetAsyncKeyStateを利用しても、ありなようですね。 こちらは日本語のページで、それなりにわかりやすそうです。 例ではさらに他のAPIとの組み合わせで、さらに精密にキーを取得しているみたいですねえ。

参考URL:
http://www.itmedia.co.jp/enterprise/articles/0412/07/news034_4.html
popopompom
質問者

お礼

お返事ありがとうございます。 ご紹介いただいた方法でほぼ解決できそうです。 グローバルフックは魅力的な方法だと思ったのですが、 私にはとても敷居が高そうなので使えるようなところまで こぎつけることができるか心配だったのですが、 GetAsyncKeyStateならとても簡単に出来そうです。 とても助かりました。ありがとうございました。

その他の回答 (2)

  • shobon
  • ベストアンサー率66% (14/21)
回答No.2

ええと…それは所謂「キーロガー」みたいに、 ・起動しても何も見えないけど、キー入力動作に反応して、どのキーを打ち込んだか記録する(ないしは対応した処理を行う) とか、そういう風な動作のアプリケーションを作成されようとしていますか? そうでありましたら「VB.NET グローバルフック」で検索してみれば、ある程度の解説や手順が乗っているかと思います。 それを読めばわかると思いますが、.NET FRAMEWORKでは別プロセスの動作を監視するのが困難であるので、APIやアンマネージの動作が必須になるようです。 下のURLは、C#.NETでグローバルフックを設定したプログラムだそうです。何かの参考にはなるかと。

参考URL:
http://www.codeproject.com/csharp/GlobalSystemHook.asp
popopompom
質問者

お礼

お返事ありがとございます。 説明のしかたがいまいち伝わり辛かったかと思いますが、 キーロガーみたい、というかそのものになるわけですね。 用途としてはショートカットキーを設定して、 他のアプリで所定の操作を簡単に行えるようにしたいと思っております。 リンク先のサンプルは正に希望通りの動作をしてくれましたが、 英語ばかりなので、かなり苦戦しそうです。 グローバルフックという言葉がわかりましたので、 いろいろと調べてみたいと思います。 またショートカットキーで他のプログラムを操作する方法で、 グローバルフック以外の方法がありましたら教えて頂けたらうれしいです。

noname#187541
noname#187541
回答No.1

おはようございます。 よく分かりませんがこの辺は参考になるでしょうか。 Buttonのクリックイベントを発生させる http://dobon.net/vb/dotnet/control/performclick.html

popopompom
質問者

お礼

お返事ありがとうございます。 今回の動作とは違うようですが、アプリの操作に便利そうなので、 グローバルフックが解決してアプリを操作するときに利用してみようかと思います。 ありがとうございました。