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

研究了一个晚下,还是弄不明白这个键盘钩子 异常在哪里,请大大们 赐教上,多谢

2012-12-29 
研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!研究了一个晚上,还是弄不明白

研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!
研究了一个晚上,还是弄不明白这个键盘钩子 错误在哪里,请大大们 赐教下,谢谢!
编译的时候出现如下错误:
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里面下载“适合程序员的键盘练习”

热点排行