SetWindowsHookEx に対抗

SetWindowsHookEx で hook についての実験をちょくちょくしています。

とりあえず、入門者が 64bit OS の上で 32bit DLL を利用した HOOK の学習は、ヤヴァイような気がしてきたので ^^; 32bit マシン上で開発テストしてました。


まだいまいち挙動が判っていないので、色々実験していたら……大変な事に!!






http://ir9.jp/hd/hd060513_01.png
かしら〜  かしら〜 かしら〜
 かしら〜かしら〜
かしら〜かしら〜 かしら〜





物の見事に Hook関数に踊らされてるぅっ!! 気分は 「無とはいったい…うごごごごご!!」



とりあえず、WH_SYSMSGFILTER でダイアログを Hook。そして、本当に Hook できてるのか判らなかったので、関数コールしてきたウィンドウ全てに、無条件で SetWindowText 噛ましたらこんな事になりました。(そしたら当たり前やん

で、WM_SETTEXTで無限ループするかと思い、こんなコード描いたのですが…



MSG* psMsg = (MSG*)lParam;

if(psMsg->message != WM_SETTEXT)
    ::SetWindowText(psMsg->hwnd, _T("かしら〜"));
else
    ::OutputDebugString(_T("WM_SETTEXT かしら〜\n"));

一回も OutputDebugString() 読んでくれないようで、アウトプットウィンドウに何も出てこなかった………う〜ん…?

別の実験で WM_INITDIALOG 捕らえようとしても分岐してくれなかったしなぁ……。 コールしてくるのは全てのメッセージじゃないのかしら……。




…まだ実験は続く。