フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: フックとかやってみる(DelWiki)
RAN
メンバー
投稿数: 34
フックとかやってみる(DelWiki)
on: 2013/04/14 07:27 Sun

原文 http://delwiki.info/?Tips%2F%A5%D5%A5%C3%A5%AF%A4%C8%A4%AB%A4%E4%A4%C3%A4%C6%A4%DF%A4%EB

フックとはユーザーの入力や飛び交うウィンドウメッセージに干渉し
その内容を変更したり、止めたりすることです。

Gen's 不定期ローテク講座 http://www2.biglobe.ne.jp/~sakai/usehook.htm
でまずフックについて勉強しましょう。

KeyBoardメッセージをフックするためのDLL雛形サンプル http://www2.biglobe.ne.jp/~sakai/bin/list2.txt
の続きを書いてみる。

TestKbdHook.DPR(略),TestKbdHookMain.pas(←リンク先にソース)
またKHDLL.dprにはえくすぽーとを書きます。

exports
SetHook,
RemoveHook,
GetHookMsgString;

KHDLL.dpr、KHMain.pas、TestKbdHook.DPR,TestKbdHookMain.pas
をコンパイル。KHDLL.dllと同じディレクトリでTestKbdHook.exeを
起動するとフックが始まります。

何かキーを押してみてください。
Form1.Captionに数値が加算されていくハズ。

蛇足


{ ここのコメント部分をはずせばフックをインストールした時に
Application側のウィンドウハンドルと、インストールしたフィ
ルタ関数のハンドルを表示する。}
with pHookInfo(p)^ do begin
MessageBox(0 ,PChar(
'Host Wnd : '+ IntToStr( HostWnd)+#13#10+
'hndHook : '+ IntToStr( hndHook)+#13#10)
,'KeyHookDLL',
MB_OK or MB_ICONEXCLAMATION or MB_SETFOREGROUND) ;
end;

メッセージフックに関する参考リンク
Halbow資料館 http://homepage2.nifty.com/Mr_XRAY/Halbow 内の
フック関数のインスタンス化 http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N006.html
加筆修正きぼんぬ

Mr.XRAY
メンバー
投稿数: 192
Re: フックとかやってみる(DelWiki)
on: 2013/05/01 23:34 Wed

マウスとキーのグローバルフックですが,こんなサンプル作っています.参考になれば.
グローバルフックというのは,システム全体で有効なフックです.
一方,ローカルフックというのがあります.これは,プロジェクトというか,プロセス単位で有効なフックです.

[260_グローバルフック ( キー・マウス ) ]
http://mrxray.on.coocan.jp/Delphi/plSamples/260_HookKeyMouseEvent.htm

このほか,よく使用されるフックには,次のようなものがあります.
[フック関数の種類 ]
http://mrxray.on.coocan.jp/Delphi/Others/A_KindOfHook.htm

また,例えば,次のようなものも,一種のフックと言えます.
[678_他のアプリの操作と IAccessible インターフェイス ] [05_オブジェクトのイベントフック - エクセルの起動と終了等を監視]
http://mrxray.on.coocan.jp/Delphi/plSamples/678_IAccessibleInterface.htm#05

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.027 sec.