首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

奇怪的SetWindowsHookEx,哪位高手能解决下?

2012-06-18 
奇怪的SetWindowsHookEx,谁能解决下?...我用SetWindowsHookEx来钩我自己写的程序,将SetWindowsHookEx设置

奇怪的SetWindowsHookEx,谁能解决下?...
我用SetWindowsHookEx来钩我自己写的程序,

将SetWindowsHookEx设置成全局钩子时,程序正常:

主要代码如下:

C/C++ code
        //获取窗口句柄    HWND hWnd=FindWindow(NULL,_T("Test"));    //获取窗口进程的pid    DWORD pid=0;    GetWindowThreadProcessId(hWnd,&pid);    //设置键盘钩子    hHook=::SetWindowsHookEx(        WH_KEYBOARD,        KeyboardProc,        GetModuleHandle(_T("DllInject.dll")),        pid  //将这里改为0时程序正常,困惑不已        );



hHook=::SetWindowsHookEx(
WH_KEYBOARD,
KeyboardProc,
GetModuleHandle(_T("DllInject.dll")),
pid //将这里改为0时程序正常,困惑不已,不改时用GetLastError()得到错误号为87
//翻了下MSDN,错误号87表示参数错误的意思,我不明白参数怎么会错误呢?
//我打开任务管理器查看我要钩的程序的pid值,跟我在程序中获得的pid值一模一样,
//真是不理解呀,望知道的朋友给解释一下呀
);

[解决办法]
是线程id,不是进程id
可用GetWindowThreadProcessId的返回值

热点排行