他のアプリ上でキーを押した時にフックすることは可能ですか?

解決


AC  2006-06-30 20:04:25  No: 95908

お世話になっております。

今回質問したいことは、
以下の機能のアプリの作成が可能かということです。

①VB.NETでアプリを作り、常駐させる。
②他のアプリ(テキストエディタやエクセル等)で、
  ある特定のキー(Ctrl + 1等)を押した時にフックする。
③②のタイミングで①のアプリの処理を実行する。
④特定のキーが押されるまで待機する。

もし可能な場合は、Ctrl + 1 のフックの方法も
ご教授いただければ幸いです。
よろしくお願いいたします。


通ってみた  2006-06-30 20:47:51  No: 95909

簡単なのは、(1)のアプリでタイマーを使って「キー入力」と「(2)のアプリがアクティブかどうか」を随時調べるという方法でしょうか


Hongliang  URL  2006-06-30 21:14:34  No: 95910

低水準キーボードフックを使う手もあります(NT 系限定)。
これはキーボードメッセージが送られたウィンドウまでは取得できないので、必要な場合はほかの関数を併用する必要がありますが。
あとは DirectInput を使うとか。


AC  2006-06-30 23:22:37  No: 95911

早々の回答ありがとうございます。

> タイマーを使って
押した瞬間に処理を実行したいです。
タイマーで間隔をとても短く

> 「(2)のアプリがアクティブかどうか」
アプリの特定は必要ありません。
説明が足りなくて申し訳ありません。
アプリが何も起動していない状態(たとえばデスクトップ画面)
でも「Ctrl + 1が押された」瞬間を取得したいのです。

> 低水準キーボードフックを使う手もあります(NT 系限定)。
こちらも最初に記述するべきでしたが
XPでも可能な方法は無いでしょうか…


Hongliang  URL  2006-07-01 05:12:56  No: 95912

> こちらも最初に記述するべきでしたが
> XPでも可能な方法は無いでしょうか…

いやいやいや、XP は NT 系です。NT4.0/2000/XP/2003/Vista がそうです。
// でも Vista では権限が厳しくなるらしいのでフックが可能かどうか知りません。
これに対し、98/Me を 9x 系と言います(95 もですが、.NET が動かないので除外)。


オショウ  2006-07-01 09:14:01  No: 95913

.NETでは、キーボードフック書けなかったと思いますが・・・
と言うより、買いても動作しなかったように・・・
私は動作しなかったので、結局C言語でキーボードフックを書いて
アプリの.NET側に橋渡ししました。

.NETでキーボードフックできた方居ます?

以上。


名無しの権兵衛  2006-07-03 19:01:37  No: 95914

VB6.0です。(.NETではありません)参考までに
http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse2.html
使い方次第でキーロガーになりますのでご注意を!!!


AC  2006-07-03 22:19:09  No: 95915

お返事が送れて申し訳ありません。

> XP は NT 系です。NT4.0/2000/XP/2003/Vista がそうです。
そうだったんですか、思い違いをしていました。

> .NETでは、キーボードフック書けなかったと思いますが・・・
VB6の環境もありますので、名無しの権兵衛さんの
リンク先を参考にさせていただきます。

皆さんありがとうございました。


nor  2007-08-03 08:46:11  No: 95916

VB2005 で電卓ソフトを作成しました。キーボードのテンキーで数値入力できるようにするには、どうすればよいでしょうか?
どなたか教えて下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加