SetWindowsHookEx什么意思
在mainform的formcreate里最后一个语句
kb_hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyProc, HInstance, 0);
不知道做什么用的。
[最优解释]
SetWindowsHookEx(WH_KEYBOARD_LL,...
这是安装一个键盘低阶钩子。
具体的处理函数中,MainForm->OnKey 的代码看不到,不清楚具体拦截键盘的意图。
[其他解释]
long CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs;
if (code < 0)
return CallNextHookEx(MainForm->kb_hook,code, wParam, lParam);
pkbhs = (KBDLLHOOKSTRUCT*) lParam;
MainForm->OnKey(pkbhs->vkCode,pkbhs->flags==0?false:true);
return CallNextHookEx(MainForm->kb_hook,code, wParam, lParam);
}
加一个函数
[其他解释]
void __fastcall TMainForm::OnKey(int KeyCode,bool KeyupFlag)
{
/*if(KeyupFlag)
return;
if(KeyCode>=112&&KeyCode<=133)
{
char url[1024];
memset(url,0,sizeof(url));
sprintf(url,"%s?callid=%s&ani=%s&dnis=%s&opid=%d&poolid=%d&pid=%s&cid=%s&key=%d&TaskID=%s&OPName=%s",
WebIp,"0","0","0",OPForm->OperatorID,KeyCode,"0","0",KeyCode,"0",OPForm->OperatorName.c_str());
//CppWebBrowser1->Navigate(WideString(url));
CreateMdi();
ObjBrowser->NavigateURL(url);
} */
}
[其他解释]
有点意思哈,这是将记录的按键通过Web方式记录到某个服务器。象是远控的东西。
[其他解释]
键盘低阶钩子和键盘钩子什么区别?
[其他解释]
键盘低阶钩子比键盘钩子先触发,可以获得更多的信息。
键盘低阶钩子放在EXE中也可以起作用,而键盘钩子必须在DLL中。