读书人

DebugProc中DEBUGHOOKINFO的成员idThr

发布时间: 2012-02-21 16:26:23 作者: rapoo

DebugProc中DEBUGHOOKINFO的成员idThread值总是为当前线程ID
下面的代码中debug->idThread的值总是固定不变。
我用SPY++查看时居然也没有变,非常奇怪。
如果是WH_CALLWNDPROC类型的HOOK,可以检查到目标窗口改变了。现在的问题是如何在DebugProc中得到目标窗口。

C/C++ code
LRESULT CALLBACK DebugProc(int nCode, WPARAM wParam, LPARAM lParam) //WH_DEBUG钩子例程{    DEBUGHOOKINFO *debug=(DEBUGHOOKINFO *)lParam;    //防止键盘被监听    if(debug->idThread!=debug->idThreadInstaller && wParam== WH_KEYBOARD)    {     return 1;    }    return ::CallNextHookEx(DEBUG_hhook, nCode, wParam ,lParam);}BOOL APIENTRY DllMain( HINSTANCE hModule,                       DWORD  ul_reason_for_call,                       LPVOID lpReserved                      ){    handle = hModule;    return TRUE;}bool WINAPI InstallHook(){    DEBUG_hhook =::SetWindowsHookEx(WH_DEBUG,(HOOKPROC)DebugProc,handle, NULL);    if(DEBUG_hhook == NULL)        return false;    return true;}bool WINAPI UnInstallHook(){    UnhookWindowsHookEx(DEBUG_hhook);    return true;}


[解决办法]
你要捕捉什么啊?
[解决办法]
不是很明白 你的意思..

[解决办法]
idThread
Type: DWORD
A handle to the thread containing the filter function.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644965(v=vs.85).aspx

读书人网 >VC/MFC

热点推荐