SetWindowsHookEx に対抗
SetWindowsHookEx で hook についての実験をちょくちょくしています。
とりあえず、入門者が 64bit OS の上で 32bit DLL を利用した HOOK の学習は、ヤヴァイような気がしてきたので ^^; 32bit マシン上で開発テストしてました。
まだいまいち挙動が判っていないので、色々実験していたら……大変な事に!!
かしら〜 かしら〜 かしら〜
かしら〜かしら〜
かしら〜かしら〜 かしら〜
物の見事に 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
捕らえようとしても分岐してくれなかったしなぁ……。 コールしてくるのは全てのメッセージじゃないのかしら……。
…まだ実験は続く。