- - PR -
システムフックのプログラムがMeで動きません
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-05 14:34
VS.NET 2003 のVC++の話題ですが。
以下のサイトを参考にキーボードフックのプログラムを作成しました。 http://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/08.html 2000やXpでは無事動いたのですが、Meで動作確認したところ、ローカルフックの如く自分自身しかフックしません。 色々調べてみて入るのですが、前述サイトと同様の記述は見つかるのですが、9X系は特殊であるという記述が見つけられません。 9X系で実現するためには、どうのような追加設定が必要なんでしょうか? | ||||||||
|
投稿日時: 2005-07-06 17:59
自己レスです。
アップ後調査の追加情報をあげます。 同一ソースで以下の環境で差が出ました。 IDE / OS | Xpで実行 | Meで実行 ------------------------------------------------------ VC++.NET 2003 / Windows XP Pro | ○ | × VC++ 6.0 / Windows XP Pro | ○ | × VC++ 6.0 / Windows Me | ○ | ○ 開発環境のOSに依存しているようです。 VC++.NETコンパイル・リンク時にMe用も動作するためのオプションスイッチがあるのでしょうか? VC++.NETは9X系では動作しないが、作成したモジュールは98・Meでは動くとMSのサイトには書いてあったのですが... | ||||||||
|
投稿日時: 2005-07-06 20:19
Win32APIを使っているからでしょう。UNICODE版をバインドしているんじゃないかなぁ?
_________________ | ||||||||
|
投稿日時: 2005-07-07 09:32
Jittaさん、返答ありがとうございます。
プロジェクトのプロパティーの「文字セット」で見てみると、「マルチバイト文字セットを使用する」になっています。 他のオプションも見てみましたが、それらしい設定部分は見つけられませんでした。 また、ディバッカで確認したところ、UNICODE は define されていませんでした。 ということは、ANSII版がリンクされていると思うのですが。 | ||||||||
|
投稿日時: 2005-07-07 13:08
Kumaさん、こんにちは。
基本的に、開発環境と稼働環境は揃えた方が良いっすよ。 特に NT 系と(16bit OS の 32bit 拡張みたいな)9x 系なんて、別モンな訳ですし。 | ||||||||
|
投稿日時: 2005-07-11 09:03
きくちゃんさん、こんにちは。
返答遅くなりました。
おっしゃることは分かりますが、開発環境に9X系がないのです。 しかしクライアントのマシンはMe... クライアントマシンはMeでなければ、動かないソフトがあるのでNT系に上げてくれとも言われない。 とりあえず、個人的なマシンを持ち込んで動作チェックを行っています。 とりあえず今回はこの個人マシンで製作して収めるというのが、手っ取り早いかも... | ||||||||
|
投稿日時: 2005-07-11 09:40
具体的に何をフックしていますか? ローレベルフックは NT 系でしか提供されていませんが、その辺は大丈夫ですか? _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2005-07-11 09:52
渋木宏明(ひどり)さん、こんにちは
以下ソースを貼り付けますが、キーボードフックを行っています。 SetWindowsHookEx() は、ヘルプを見ると9X系でもサポートしているようですが、このような処理方法がいけないのでしょうか? もしそうだとすると、Meでコンパイルすると動くというのも不思議です。 ---------------------------------------------------
[ メッセージ編集済み 編集者: Kuma 編集日時 2005-07-11 09:55 ] |