バックグラウンドにある時に、感知するには?


スパムちゃんROC  2010-08-21 19:24:01  No: 39034

スパムちゃんROC(Roll Or Choice)です。

Delphiで作ったソフトが、バックグラウンドにあった場合って、キーボードの入力を感知する方法ってありませんか?


  2010-08-21 19:42:04  No: 39035

こういうやつですか?

http://mrxray.on.coocan.jp/Delphi/plSamples/260_HookKeyMouseEvent.htm


けど  2010-08-21 20:04:44  No: 39036

ジャーナルフックって
CTRL+ESC、CTRL+ALT、CTRL+ALT+DEL
でWM_CANCELJOURNALが来た時に再処理しないといけないんでは
なかったでしょうか?


スパムちゃんROC  2010-08-21 20:43:05  No: 39037

いや、キー入力を知りたいだけなので、okです。
でも、なぜ再起動?

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


Mr.XRAY  2010-08-21 21:50:54  No: 39038

こんにちは,Mr.XRAYです.

>CTRL+ESC、CTRL+ALT、CTRL+ALT+DEL
>でWM_CANCELJOURNALが来た時に再処理しないといけないんでは

これは中々難しい問題です.
Windows 2000の頃だったと思いますが,マイクロソフトのアプリケーション作成の指針
みたいなPDF文書を真面目に読んだことがあります.
しかし,この掲示板でもそうですが,Delphiのコミュニティの場で,たとえば

「何々を無効にしたいのですが,どうしたらいいですか」

というようなマイクロソフトの指針に逆らうような仕様のアプリを作成したい人もいます.

CTRL+ESC 等は,WM_CANCELJOURNALフックを止める,中止するキー操作です.
もちろん,マイクロソフトのSDKでは

「アプリケーションはVK_CANCEL(WM_CANCELJOURNAL)を検出したらフックを終了すべきである」(再処理というわけではないですね)
となっています.私のサンプルはマイクロソフトに完全に逆らっているわけです.
ネット上のサンプルコードを利用する方は,自分で確認することも必要ですね.

すみませんネ.マイクロソフトに逆らって.

というわけで,本当はVK_CANCELの処理を入れた方がいいでしょうね.
マイクロソフト,いやビルゲイツかな? 逆らうと怖いですもん.
「あ」さんのようにマイクロソフトの指針には逆らわない姿勢も大切です.


Mr.XRAY  2010-08-22 07:57:05  No: 39039

ものはついでで,補足です.

>「アプリケーションはVK_CANCELを検出したらフックを終了すべきである」

他のフック関数にはこのようなことはないのに,なぜWH_JOURNALRECORDフックにはフッ
ク終了のキー検出が必要かということです.
これは,このフックは,RECORDという名前のように,キーやマウスメッセージを記録
し,WH_JOURNALPLAYBACKを使用して再生という目的で利用することがあるからです.

そのため,フック終了のためにフォームのボタンなりをクリックことになると,そのフ
ォームをアクティブにするという余計な操作も必要(記録)となってしまいます.
そこで,何かしらのショートカットキー(ホットキー) が必要となるわけです.

説明が長くなり申し訳ありません.


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

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






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