好的,所以有很多用于鼠标全局挂钩的示例。
我的问题是如何为鼠标移动添加计时器/延迟。
这样做的方法是什么?我想也许我应该 Thread.Sleep() 检测 WM_MOUSEMOVE ?
if (MouseMessages.WM_MOUSEMOVE == (MouseMessages)wParam)
{
Thread.Sleep(delay)
}
谢谢。
好的,所以有很多用于鼠标全局挂钩的示例。
我的问题是如何为鼠标移动添加计时器/延迟。
这样做的方法是什么?我想也许我应该 Thread.Sleep() 检测 WM_MOUSEMOVE ?
if (MouseMessages.WM_MOUSEMOVE == (MouseMessages)wParam)
{
Thread.Sleep(delay)
}
谢谢。
恐怕您不能以这种方式减慢鼠标的移动速度。在这里,您只会收到有关新鼠标位置的通知,系统并不关心您对此通知做了什么以及完成需要多长时间,或者它是否处于休眠状态。
我想你应该在每个“延迟”时间“记录”鼠标位置,然后每次新的 WM_MOUSEMOVE 事件到达(并且坐标与记录的坐标不同),那么你应该将鼠标光标位置“重置”为保存坐标。
当然,这直到 WM_MOUSEMOVE 在“延迟”时间内到达。否则只需记录一个新位置并等待下一个事件。
.NET 具有 Cursor.Position 属性,它应该允许您将鼠标光标移动到您想要的位置,其他语言应该有类似的,但我从未尝试过,我不确定它在您的“全局”上下文中是否正确运行.
无论如何,弄乱光标位置会让用户非常沮丧
也许您不想完全停止光标“延迟”时间,也许您想用 <1 因子将新位置与前一个位置线性插值?这会减慢鼠标的速度,但效果会更平滑。