Delphi6パーソナルで、アプリケーション作ってます。
常駐アプリにしたいので、Form1を、application.showmainform:=false;で消してるんですが、そうすると、オンキーダウンとかのイベントが発生しなくなってしまうんです。 誰か分かる方、ぜひご教授お願いします。
KeyDownなどのイベントは、イベントを設定したフォームにしか機能しません。Windowsは、フォームにキーが押されたなどの通知を送り、VCLはそれをイベントとして、プログラマに操作できるようにしているだけだからです。
メインフォーム以外の(自アプリケーション内の)フォームのキーイベントを知りたい場合は、そのフォームにイベントを設置します。それ以外の(自アプリケーション以外の)場所のキーボード入力を知りたい場合には、システムフックする必要があります。
>誰か分かる方、ぜひご教授お願いします。
何が分かればいいんですか.
何かキー押したら,そのFormのOnkeyDownが発生させたいのですか.
それはできません.ちょっと考えて下さい.
常駐アプリですよね.それが常駐している時に,例えばワードを操作
するとします.キーを押したら,貴方のFormにキー操作がいってし
まったら,ワードが操作できなくなります.
もし,特定のキーまたはキーの組合わせを検出するのであれば可能です.
ただし,この場合,常にPC上で操作したキーを監視する仕組みが必要です.
発言を眺めている間にすでにレスがありましたね.
で,間違いに気づきました.
>もし,特定のキーまたはキーの組合わせを検出するのであれば可能です.
でなくてもいいんですね.常に監視するわけですから.
皆さん説明不足ですいませんでした。
僕がやりたいことは、常駐アプリでキーを押したら「〜」が押されました。
って言うダイアログを出すようにしたいんです。
どのような方法でもいいんですが、なるべく簡単なやつをお願いします。
>>Mr.Xray様
追記です。。 全てのキーを監視するようにしたいです。
ここの本元の
http://madia.world.coocan.jp/delphi/index.html
Delphi - 過去のTips集
特選サンプル集
システム全体に影響を及ぼす強力なフックの方法http://madia.world.coocan.jp/delphi/tokusen.htm
がまさにそれです。
Mr.Ωさんが一番最初に書いた文章を読んだ限りでは、もう少し修行を積んでから扱うべきとは思いますが…
動く環境と動かない環境がありますか?
WinXP D2005で動いたのですが
Win2KServer D2005では変に誤動作してIDEごと落ちたりするような
状態でした。
ツイート | ![]() |