研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!
研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!
编译的时候出现如下错误:
hook.cpp(70) : error C2447: missing function header (old-style formal list?)
hook.cpp(93) : error C2065: 'KeybordProc' : undeclared identifier
以下代码是我用 VC6 模仿视频里vs2008制作键盘钩子的代码:
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
);
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(WPARAM==VK_F5)
{
if(LPARAM& ((1<<31)==0))
{
AfxMessageBox(L"按下了F5");
}
}
return CallNextHookEx(NULL,code,WPARAM,LPARAM);
}
void SetHook()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HWND hWnd=FindWindow(NULL,"航海王 Online");
if (hWnd==NULL)
{
AfxMessageBox("游戏未运行");
return;
}
DWORD pid,tid;
tid=GetWindowThreadProcessId(hWnd,&pid);
SetWindowsHookEx(WH_KEYBOARD,KeybordProc,GetModuleHandle("hook.dll"),tid);
}
[解决办法]
error C2065: KeybordProc
LRESULT CALLBACK KeyboardProc
你仔细瞧瞧,这两个能一样吗?
[解决办法]
hook.cpp(70) : error C2447: missing function header (old-style formal list?)
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
); //這裡多了個;號
{
hook.cpp(93) : error C2065: 'KeybordProc' : undeclared identifier
SetWindowsHookEx(WH_KEYBOARD,KeybordProc,GetModuleHandle("hook.dll"),tid);
這句函數名打錯了。
[解决办法]
hook.cpp(93) : error C2065: 'KeybordProc' : undeclared identifier
既然出这个错误,当然应该检查KeyboardProc函数是不是有问题了。楼主把函数名打错了。
并且,函数定义的时候不要在括号后面加分号:
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
);
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(WPARAM==VK_F5)
{
if(LPARAM& ((1<<31)==0))
{
AfxMessageBox(L"按下了F5");
}
}
return CallNextHookEx(NULL,code,WPARAM,LPARAM);
}