怎么解决加了钩子后,鼠标动作变慢的问题

hzfushi201 2012-06-08 04:37:28
问题是这样的。我加了个全局鼠标钩子。当我鼠标左键按下时,开始启动定时器计时(比如3s),如果长按到达3s,那就显示一个对话框。如果3s前我鼠标左键释放了(LBUTTONUP),则停止定时器,下次按下鼠标左键时重复这样的处理。

现在有个问题是:
当我运行程序时,发现鼠标移动时很慢,原因就是钩了这个鼠标钩子,去掉后就没有问题。
但我现在要达到这个长按弹起对话框的功能(在桌面长按也要能弹起),必须要用到全局钩子,请问大家有没有什么好的方案,或者在现在处理的基础上进行哪些优化,使得钩了钩子的影响最小。
...全文
578 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnfixit 2012-06-09
  • 打赏
  • 举报
回复
把timer注释掉看看有没有好一点
hzfushi201 2012-06-09
  • 打赏
  • 举报
回复
最后顶下,没人知道就关闭了。
hzfushi201 2012-06-09
  • 打赏
  • 举报
回复
目前还没有解决,请高手来回答。
hzfushi201 2012-06-08
  • 打赏
  • 举报
回复
坐等高手解决。
hzfushi201 2012-06-08
  • 打赏
  • 举报
回复
自己顶一下。
hzfushi201 2012-06-08
  • 打赏
  • 举报
回复

private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
if (nCode < 0)
{
return CallNextHookEx(m_hHook, nCode, wParam, lParam);
}
else
{
switch (wParam)
{
case WM_LBUTTONDOWN:
LButtonDownProcess();
break;
case WM_LBUTTONUP:
LButtonUpProcess();
break;
default:
break;
}
return CallNextHookEx(m_hHook, nCode, wParam, lParam);
}
}


private void LButtonDownProcess()
{
if (m_popMenu.Visible == true)
{
//如果menu已经显示了,则关闭menu
m_popMenu.Visible = false;
return;
}

m_MouseDownTimer.Start();
m_bTimerStart = true;
}

private void LButtonUpProcess()
{
if (m_bTimerStart == true)
{
m_bTimerStart = false;
m_MouseDownTimer.Stop();
}
}
__天涯寻梦 2012-06-08
  • 打赏
  • 举报
回复
钩子的回调方法贴出来看看
hzfushi201 2012-06-08
  • 打赏
  • 举报
回复
没有人知道吗?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧