2011-06-20 22 views
1

DLLなしでグローバルWH_GETMESSAGE HOOKを作成しようとしていますが、成功できません。あなたが任意の時間を持っている場合は、私を助けてくださいDLLなしでグローバルWH_GETMESSAGE HOOKを作成する方法

SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle(NULL),0); 

: 私のOSは、これは私のいくつかのコードで、Win7の32ビットです。 :)

答えて

2

As documented

HMOD

タイプ[IN]:フックプロシージャを含むDLLのHINSTANCE

ハンドルがlpfnパラメータによって指されます。 dwThreadIdパラメータが現在のプロセスによって作成されたスレッドを指定し、フックプロシージャが現在のプロセスに関連付けられたコード内にある場合は、hModパラメータをNULLに設定する必要があります。

hMod必見DLLへのハンドルで。 EXEではありません。これは、実行中のすべてのプロセスにフックされるDLLがロードされ、そのコードがそのプロセス内から直接実行されるためです。

+0

感謝の呼び出し側のスレッドでメッセージループを必要とするが、それは私のために役に立たないようです。 – italkboy

+0

他のやり方があると思います。ありがとう〜。 – italkboy

+0

@italkboy、あなたは答えとして別の方法を書く必要がありますので、同じ問題を抱えている誰かが助けを得ているかもしれません... – bdonlan

0

最後のパラメータは '0'であってはなりません。関数を呼び出すスレッドのスレッドIDである必要があります。最後と最後の両方にnullを渡すことはできませんパラメーター。現在のスレッドのIDを取得するには、GetThreadId()を使用します。これは、実行する可能性が高いです。

上記のポスターの回答は、あなたが読んだことがあれば、あなた自身がそれを見たことがあるでしょう。

+0

ありがとう、私は妥協を見つけた、そして私は再びそれを試してみる:) – italkboy

1

あなたはは、SetWindowsHookEx

あなたの答えのための
while(GetMessage(&msg, NULL, 0, 0)) 
{ 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
} 
関連する問題