システムフックの方法 – プログラミング – Home

通知
すべてクリア

[解決済] システムフックの方法


ポルト
 ポルト
(@ポルト)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

こんにちは。

システムフックをDLLで作成したのですがうまくいきません。
ローカルフックとしてEXEで作成したときは動いたのですが・・・。
フックタイプ、フックプロシージャは問題がないので、
あとはハンドルかスレッド識別子だとおもうのですが、
以下のソースではだめなのでしょうか?
どなたかわかる方がいたら教えてください。

m_hHook = ::SetWindowsHookEx( WH_KEYBOARD,
 (HOOKPROC)CKeyboardHook::KeyboardProc,
(HINSTANCE)AfxGetResourceHandle,
AfxGetApp()->m_nThreadID );

環境
OS:XP
Visual Studio 2003 .NetFramework 1.1
vc++


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

回答ではありません。

> .NetFramework 1.1
本当にそのプログラムは .NET Framework(Managed C++) をつかったものでしょうか?
# 普通 .NetFramework 1.1 と記述されると、このライブラリを使っています = MC++
# と捕らえますよね?

> AfxGetApp
MFCですよね?

できれば、プロジェクトの種類
(「MFC ApplicationのSDI」とか「Windowsフォームアプリケーション」)
の情報も付加してもらいたいです。

以上、回答でなくてスミマセンでした。


返信引用
三草
 三草
(@三草)
ゲスト
結合: 19年前
投稿: 56
 

三草です

第3引数に()付いてないのが気になりましたが、
> (HINSTANCE)AfxGetResourceHandle,
その前に、AfxGetResourceHandle関数で、自分自身(今回はDLL)のハンドルって取れまし
たっけ?
GetModuleHandle()やDllMain()の第1引数のHINSTANCEではどうでしょう。
#取れてたらごめんなさい

例えば)
static HINSTANCE g_hDllInst;

DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
g_hDllInst = hInstance;
...


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

マルチですね。

件名:システムフックについて教えてください。 -@IT会議室 -
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31727&forum=7&1

発言される前に「使用上の注意」を必ずお読み下さい。
> ■ マルチポストについて
>
> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」です。
> この行為は
> マナー違反として嫌われています。マルチポストは行わないで下さい。
>
> 誤ってマルチポストしてしまった場合には、必ず全ての掲示板にどのように
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 解決したかを記述し、かつお礼を書き込んで下さい。
  ~~~~~~~~~~~~~~~~


返信引用
三草
 三草
(@三草)
ゲスト
結合: 19年前
投稿: 56
 

件名:システムフックについて教えてください。 -@IT会議室 -
囚人さん 投稿日時: 2006-06-30 12:46
> #インスタンスハンドルは AfxGetResourceHandle() で良いかも
ぉぉぅ、AfxGetResourceHandle()でいいらしいですね。
失礼しました。

マルチはいけませんね。。。

はじめの一歩:マルチポストはやめましょう
http://www.ippo.ne.jp/g/53.html


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> (HOOKPROC)CKeyboardHook::KeyboardProc,

この関数が HOOKPROC と互換性があるか疑問。

> (HINSTANCE)AfxGetResourceHandle,

写し間違いでなければ、関数ポインタを渡しているので誤り。


返信引用
ポルト
 ポルト
(@ポルト)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

みなさん、ご指摘ありがとうございました。
掲示板初心者なものでマナーも知らずすみません。

解決しましたら必ずすべての掲示板で解決方法を掲載させていただきます。
ごめんなさい。


返信引用
ポルト
 ポルト
(@ポルト)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

AfxGetResourceHandle()で解決しました。
単純なミスでした。

みなさんのおかげです。ありがとうございます。
マナー違反をしてしまいましたが、以後気をつけますので
今後ともご指導よろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました