我需要实现当用户任何时间按下鼠标中键就做一件事,我用一个DLL设置鼠标钩子来测试时发现有些问题,当我很快地点击鼠标中键时,没有任何反应,慢一点点击,又会弹出好几个消息框,请问是怎么一回事?
LRESULT CALLBACK MyMouseHook(int code, WPARAM wParam, LPARAM lParam)
{
if(code==HC_ACTION) {
if(wParam==WM_MBUTTONUP) {
AfxMessageBox("MBUTTONUP");
}
}
return ::CallNextHookEx(g_hHookMouse, code, wParam, lParam);
}
LRESULT CALLBACK MyMouseHook(int code, WPARAM wParam, LPARAM lParam)
{
if(code==HC_ACTION) {
if(wParam==WM_MBUTTONUP) {
AfxMessageBox("MBUTTONUP");
}
}
return ::CallNextHookEx(g_hHookMouse, code, wParam, lParam);
}
是不是WM_MBUTTONDOWN啊,你是WM_MBUTTONUP处理,可能有抖动动的可能吧
LRESULT CALLBACK MyMouseHook(int code, WPARAM wParam, LPARAM lParam)
{
if(code==HC_ACTION) {
if(wParam==WM_MBUTTONUP) {
ShellExecute(NULL,NULL,"http://www.sina.com.cn",NULL,NULL,SW_SHOWNORMAL);
}
return ::CallNextHookEx(g_hHookMouse, code, wParam, lParam);
}
但测试时发现每次按下鼠标中键ShellExecute会被执行很多遍,换用AfxMessage测试也是这样,后再换为写文件测试就是正常的,请问为什么会这样,如何解决?