研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!
研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!
编译的时候出现如下错误:
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);
}
[解决办法]
关于自己是否适合编程的很简单的测试:
在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案:
A里面有10处以上文字或标点错误
B里面没有文字或标点错误并敢为此跟人打赌
C里面没有文字或标点错误并且字体和排版完全与原稿一致
D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感
A不适合编程(理由:打字准确度偏低、粗心大意)
B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念)
C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证)
D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!)
如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”