キーイベント


Mr.Ω  2005-03-16 05:37:38  No: 13771  IP: [192.*.*.*]

Delphi6パーソナルで、アプリケーション作ってます。
常駐アプリにしたいので、Form1を、application.showmainform:=false;で消してるんですが、そうすると、オンキーダウンとかのイベントが発生しなくなってしまうんです。  誰か分かる方、ぜひご教授お願いします。

編集    削除
たかみちえ  URL  2005-03-16 06:40:48  No: 13772  IP: [192.*.*.*]

KeyDownなどのイベントは、イベントを設定したフォームにしか機能しません。Windowsは、フォームにキーが押されたなどの通知を送り、VCLはそれをイベントとして、プログラマに操作できるようにしているだけだからです。

  メインフォーム以外の(自アプリケーション内の)フォームのキーイベントを知りたい場合は、そのフォームにイベントを設置します。それ以外の(自アプリケーション以外の)場所のキーボード入力を知りたい場合には、システムフックする必要があります。

編集    削除
Mr.XRAY  URL  2005-03-16 06:56:23  No: 13773  IP: [192.*.*.*]

>誰か分かる方、ぜひご教授お願いします。

何が分かればいいんですか.
何かキー押したら,そのFormのOnkeyDownが発生させたいのですか.
それはできません.ちょっと考えて下さい.

常駐アプリですよね.それが常駐している時に,例えばワードを操作
するとします.キーを押したら,貴方のFormにキー操作がいってし
まったら,ワードが操作できなくなります.

もし,特定のキーまたはキーの組合わせを検出するのであれば可能です.
ただし,この場合,常にPC上で操作したキーを監視する仕組みが必要です.

編集    削除
Mr.XRAY  2005-03-16 06:59:21  No: 13774  IP: [192.*.*.*]

発言を眺めている間にすでにレスがありましたね.
で,間違いに気づきました.

>もし,特定のキーまたはキーの組合わせを検出するのであれば可能です.

でなくてもいいんですね.常に監視するわけですから.

編集    削除
Mr.Ω  2005-03-16 08:03:01  No: 13775  IP: [192.*.*.*]

皆さん説明不足ですいませんでした。

僕がやりたいことは、常駐アプリでキーを押したら「〜」が押されました。
って言うダイアログを出すようにしたいんです。

どのような方法でもいいんですが、なるべく簡単なやつをお願いします。

編集    削除
Mr.Ω  2005-03-16 08:05:48  No: 13776  IP: [192.*.*.*]

>>Mr.Xray様
追記です。。  全てのキーを監視するようにしたいです。

編集    削除
メラトニン  2005-03-16 09:41:00  No: 13777  IP: [192.*.*.*]

ここの本元の
http://madia.world.coocan.jp/delphi/index.html
Delphi - 過去のTips集
特選サンプル集
システム全体に影響を及ぼす強力なフックの方法http://madia.world.coocan.jp/delphi/tokusen.htm
がまさにそれです。
Mr.Ωさんが一番最初に書いた文章を読んだ限りでは、もう少し修行を積んでから扱うべきとは思いますが…

編集    削除
Fusa  2005-03-17 04:52:02  No: 13778  IP: [192.*.*.*]

動く環境と動かない環境がありますか?

WinXP D2005で動いたのですが
Win2KServer D2005では変に誤動作してIDEごと落ちたりするような
状態でした。

編集    削除