このコンポーネントは、フォームに貼り付けるだけでWindowsがグローバルに処理してくれるホットキーを登録できてしまうんです……恐ろしいッ(そうか?)
メニューにショートカットを設定する場合と何が違うかと言うと、Windowsにホットキーを登録すれば、たとえアプリケーションがフォーカスを失っていようと最小化していようと、ホットキー一発で呼び出せるようになります。ショートカットではこうは行きません……
コンポーネントの使い方は、簡易マニュアルをご覧下されませい。
===============================================================================
魔僧神仙コンポーネントライブラリ#1
TWaitHotKey version 1.00 for Delphi
Programed by Nagayama / Masoushinzen
Last up to date 1999/08/18
===============================================================================
[ 概要 -----------------------------------------------------------------------]
このコンポーネントは、Windowsにホットキーを登録し、キーボードから
そのホットキーが入力されればイベントを起動すると言うものです。
特徴としては、Windowsキー(スタートキー)にも対応していることでしょうか……?
[ 動作環境 -------------------------------------------------------------------]
WindowsNT。Windows95/98でも、動作はすると思いますが確認していません。
コンパイル可能なDelphiの対応バージョンも不明です。
なんとなくDelphi3.0以下ではコンパイルできないような気がします……
ウィンドウハンドルを捏造するメソッドが毎度互換性があるものやらないのやらで。
もしコンパイルできたら、メールくだされい。
……4.0でもコンパイルできなかったりして(^^;) oioi
[ 製作・動作確認環境 ---------------------------------------------------------]
アセンブリAT互換機。
Delphi : 4.0 Update3
CPU : PentiumII-450Mhz
MEMORY : 224MB
OS : Microsoft WindowsNT4.0 WS SP4
+ InternetExplorer4.01SP2 with ActiveDeskTop
あと、ごちゃごちゃと……詳しく知りたければホームページを見てくれい(^^;)
[ 使い方 ---------------------------------------------------------------------]
まず、vclWaitHotKey.Pas を IDE にインストールしてください。動的に作成するなら
そのままで結構ですが。インストール方法はマニュアルをご覧あれ…
コンポーネントパレットにアイコンが現れたら、フォームに貼り付けてオブジェクト
インスペクタを開いて、設定を施します。
プロパティのリファレンスは以下のとおり。
AutoExec : Boolean
True の場合、実行中にカスタマイズしない場合のために、オブジェクトの
起動と同時にホットキーを有効にします。
False の場合、実行中に InstallHotKey メソッドを使って有効にしなければなりません。
Busy : Boolean
イベントハンドラが実行されている間、True になります。
Enabled : Boolean
True の場合、登録されて有効になっているホットキーが押されると
イベントハンドラを実行します。
False の場合、キーボードからホットキーを入力してもイベントが
発生しません。ちなみに False でもホットキーの登録自体は可能です。
Handle : HWND
ウィンドウハンドルです。非ビジュアルコンポーネントであっても、
メッセージを受け取るためには必要なんです。
HotKey : String
Windows に登録するホットキーの文字列です。内部的に変換して Windows に
渡します。
設定は装飾キーと合わせて設定でき、設定後に装飾キーは正規化されて
表示されます。有効でないキー名を設定されるとキャンセルしますが、
使えないキーでも認識できるモノがあって具体的には内緒です(笑)
KeyAssign クラスで設定するほうが楽かも。
KeyAssign : TKeyAssign
装飾キーを分離して管理しているクラスです。HotKey プロパティと
連動しています。
Alt : Boolean Alt(GRPH) キーを使います
Ctrl : Boolean Ctrl キーを使います
Shift : Boolean Shift キーを使います
WinKey: Boolean Windows キー(スタートキー)を使います
Key : String キー名です。無効と判断するとキャンセルします。
Reentrant : Boolean
True の場合、イベントハンドラの再入を許可します。イベントハンドラで
モーダルなダイアログを使っていても、ホットキーでさらに実行できます。
どうなるか、サンプルを実行してみてください。
False の場合、イベントが起動中はホットキーが入力されても無視します。
メソッドのリファレンスは以下のとおり
procedure InstallHotKey;
設定したホットキーを Windows に登録します。登録されたホットキーは
デザイン中だろうと所構わず有効なので注意しましょう(^^;)
ちなみに、内部で最初に UninstallHotKey を呼んでいます。
procedure UninstallHotKey;
設定されているホットキーを解除します。一時的に無効化したい場合には
Enabled プロパティを False に設定してください。
イベントのリファレンスは以下のとおり
OnCatchHotKey( Sender:TObject )
キーボードからホットキーが入力されると発生するイベントです。
イベントハンドラから押されたホットキーを取得するには、
(Sender as TWaitHotKey).HotKey(またはKeyAssign)
などとして参照してください。
OnChangeKey( Sender:TObject )
ホットキーの設定が変更されると発生します。
主な使い道としては、カスタマイズ用ダイアログなんかで変更後の
ホットキー文字列をエディットなどに再設定するのに使えるのでは。
OnRegisterKey( Sender:TObject )
設定されたホットキーが無事 Windows に登録されたときに発生します。
[ 必読 -----------------------------------------------------------------------]
このソフトウェアはFreeSoftWare(タダに非ず。自由に使ってよい、の意)として
公開してあります。著作権は放棄しませんが、プログラム、ソースコードともに
その利用法は各自の自由とし、使用に伴って発生した、いかなる損害をも保証する
義務を負わないとしておきます。デバッグには前向きに対処したいと思いますが。
転載や再配布などはガンガンしてもらって結構です。許可も要りません。
ただし、常識ですがアーカイブの中身を改変したりしないように……
ソースコードはBorland Delphi用のもので、バージョンは4.0のみ確認しています。
少なくともBorland C++Builderでのコンパイルは考慮してません。
[ 1999年の俺 -----------------------------------------------------------------]
メールアドレス : nagayama@psn.ne.jp
ホームページURL: http://www.psn.ne.jp/~nagayama/
要望・苦情・サポート等はメールでも掲示板でもOKですが、メールは大体
ホームページに掲載しますので、あらかじめご了承を。(匿名可)
そのうち、サポート専用の掲示板も作るでしょう……多分。
[ EOF ------------------------------------------------------------------------]