README.TXT 1.概要 TNkClipDetector はクリップボードを監視し、クリップボードの変更を知らせる 簡単な非ビジュアルコンポーネントです。わずか百数十行程度の簡単なものですが、 Internet を探しても見当たらなかったので作りました。 TNkClipDetector は 自分を ClipboardViewer として Windows に登録し、 クリップボードを監視します。クリップボードに変更が起きると OnClipChange イベントが発生します。 2. インストール方法 NkClipDetector.pas と NkClipDetector.dcr を適当なディレクトリにコピーして 「コンポーネントのインストール」でインストールしてください。 3. 動作原理 TNkClipDetector は見えないウィンドウを作成し、これを Clipborad Viwer をして Windows に登録します。TNkClipDetector はこのウィンドウに WM_DRAWCLIPBOARD が 送られてくると OnClipChange イベントハンドラを呼び出します。 4. 使い方 4.1 基本的な使い方 TNkDetector をコンポーネントパレットからドロップし、オブジェクトインスペクタの イベントページで OnClipChange イベントにイベントハンドラを割り当ててください。 クリップボードが変更された時そのハンドラが呼び出されます。 procedure TForm1.NkClipDetector1ClipChange(Sender: TObject); begin // クリップボード変更時にやりたいことを書く end; 設計時ではなく、実行時にイベントハンドラを割り当ててももちろん構いません。 例えば NkClipDetector1.OnClipChange := NkClipDetector1ClipChange2; というふうに、OnClipChange にイベントハンドラを代入してください。 4.2 IgnoreFirst Property IgnoreFirst Property は最初のクリップボードの変更を無視(ハンドラを呼び 出さないように)するための Property です。Default は True です。 ClipBorad Viewer を Windows に登録する時、Windows は無条件に WM_DRAWCLIPBOARD を Viewer に送ります。これは 本来、WM_DRAWCLIPBOARD が名前の通り、 クリップボードの描画を促すメッセージだからです。IgnoreFirst = True の場合は この最初のメッセージで OnClipChange イベントが起きません。 設計時にイベントハンドラを設定している場合で、IgnoreFirst = False の 場合は、TNkDetector コンポーネントが初期化される時、つまり、TNkDetector が貼り付けられているコントロール(フォーム、パネル等)の初期化が完全に 終了する前にイベントが発生しますので注意してください。 OnClipChange の発生契機を以下にまとめておきます。 IgnoreFirst = False IgnoreFirst= True 1) 設計時にハンドラが 設定された ○ × NkClipDetector がアプリケーション 起動時に初期化される時 (これが最も一般的) 2) 設計時にハンドラの 設定をせず、実行時に ○ × ハンドラを設定する時 3) 設計時又は実行時に 設定したハンドラを × × さらに変更する時 4) ハンドラが設定されていて クリップボードが変化した時 ○ ○ 5) 設定されていたハンドラを × × 削除(Nil の代入)した時 普通は、1) と 4)を考慮しておけば十分です。 3) で設計時にハンドラを変更してもイベントが発生しないことに注意してください。 5.著作権について このプログラムの著作権は 中村 拓男 が保持します。しかし、配布/改変/利用は 完全に自由です。BBS, NetNews, Mailing List, Software Archive 等に転載も 自由です。何の制限も有りません。ただ、一言連絡していただけるとうれしいです。 本プログラムの不具合による損害の責任は負いません。 サポートは特に行ないませんがバグが有ったら知らせてくれると助かります。 6. 連絡先 ご意見、ご希望、ご感想、バグレポート等がございましたら、 nakamuri@asahi.email.ne.jp まで 7. 改訂履歴 1997.4.27 1.0 版 初版 1997.4.28 1.1 版 IgnoreFirst Property を追加。 1997.5.8 1.2 版 実行時にイベントハンドラが「変更」できないという 大バグを発見 (^^;。直しました。