【发布时间】:2017-10-15 14:27:14
【问题描述】:
所以我使用SetWindowsHookEx() 创建了一个全局热键。我想要它做的是当我按下鼠标右键时它应该一次又一次地执行一些代码。问题是如果我按下鼠标右键,它只会执行一次。
这是我的回调函数:
private static IntPtr ButtonHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0)
{
if (wParam == (IntPtr)WM_RBUTTONDOWN)
{
_m.rtbLog.AppendText("Right mouse button was clicked \n");
}
else if (wParam == (IntPtr)WM_LBUTTONDOWN)
{
_m.rtbLog.AppendText("Left mouse button was clicked \n");
}
}
return CallNextHookEx(MainWindow._hookId, nCode, wParam, lParam);
}
【问题讨论】:
-
重复运行代码需要循环或定时器。考虑到一个循环在需要由人的手指启动和停止时循环的频率,你肯定会寻找一个计时器。在 mousedown 上启动计时器,在 mouseup 通知上停止它。计时器通常精确到 ~16 毫秒。
标签: c# wpf button callback mouse