プロが教える店舗&オフィスのセキュリティ対策術

とあるアプリケーションがアクティブウィンドウである場合、
とあるキーを抑制するアプリを作っているのですが、

とあるキーを抑制するのは低レベルキーフック用のDLLを用意して実現しました。
とあるアプリケーションがアクティブウィンドウである場合は、
500msのタイマで監視していたのですが、かっこわるいので
ウィンドウイベントをフックしてWM_ACTIVATEあたりを拾って
拾ったときのウィンドウハンドルがとあるアプリケーションのウィンドウか否かで
判断しようかなんて思ったのです。

で、本題です。
SetWindowsHookEx(WH_CALLWNDPROC, &HookProc, g_hInst, NULL);
と、実行しているのですが、自分のウィンドウと、IMEとか、
合計3~4種のウィンドウのイベントしか拾えません。
電卓を起動しても電卓のイベントが何も拾えなかったり。
デバッグだからだめなのかと思い、ログファイルに吐かせた結果
こういった状況です。
ロギングしたイベントは特にマスクせずに、コールバックが呼ばれ、
HC_ACTIONであった場合に全て書き出してみました。

そこで質問です。
SetWindowsHookEx(WH_CALLWNDPROC~
では、デスクトップ上の全てのウィンドウのイベントを覗き見できる
訳ではないのでしょうか?
それとも、やり方がわるいのでしょうか?

宜しくお願いします。

#SetWindowsHookExの取り扱いについてはMSDN上で確認できる
#部分についてはわかっているつもりです。

A 回答 (2件)

 こんにちは。



 g_hInstにフック用に作成したDLLモジュールハンドルを指定していないのでは。

 参考になりそうなURL
 http://oshiete1.goo.ne.jp/qa1343915.html

この回答への補足

してます。

#SetWindowsHookExの取り扱いについてはMSDN上で確認できる
#部分についてはわかっているつもりです。

補足日時:2009/04/18 19:22
    • good
    • 0
この回答へのお礼

あとURL先ですが、
そちらはローカルフックにしようとしていて
グローバルフックにしていたというオチですよね。
グローバルフックは低レベルキーフックで実現していまして、
ウィンドイベントのフックも同じくグローバルフックで行いたいのですが、
半端にしかイベントを拾えてないという状況に問題があるのです。

申し訳ないですが、参考にはなりそうも御座いませんでした。

お礼日時:2009/04/18 19:31

この辺を参考にしてみては?


http://homepage2.nifty.com/c_lang/sdk2/sdk_163.htm
    • good
    • 0
この回答へのお礼

参考にはならないようです。

結局回等は得られませんでしたが、
恐らくですが、WH_CALLWNDPROCでは無関係なウィンドウの
ウィンドウイベントまで拾えるわけではなさそうですね。

お礼日時:2009/04/24 11:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A