我在项目中使用来自this页面的全局鼠标钩子。我希望鼠标在单击时移动指定的路径,但是如果我放开鼠标按钮则会中断,但由于某种原因,HookManager_MouseUp将不会触发直到我的for循环中的大约175个循环(forloop用于移动)鼠标)。 (那应该是大约0.4秒)。无论我按下鼠标按钮多长时间,它只会在0.4秒后停止循环。如果我等待的时间超过了它,那么当我放开鼠标按钮时它会立即停止循环。
public void MoveMouse()
{
btm = new Bitmap(2000, 2000);
for (int i = 0; i < BézierPointList.Count; i++)
{
if (!run) { break; }
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point((int)BézierPointList[i].X(), (int)BézierPointList[i].Y());
Graphics g = Graphics.FromImage(btm);
g.DrawRectangle(new Pen(Color.Red), (int)BézierPointList[i].X(), (int)BézierPointList[i].Y(), 1, 1);
Application.DoEvents();
System.Threading.Thread.Sleep(2);
}
CreateGraphics().DrawImage(btm, 0, 0);
}
(图形用于调试)。 有没有办法更新事件,或者我可以做些什么来解决这个问题?谢谢! (C#)
编辑:
我的Form1.Designer.cs包含此代码(以及其他)
Gma.UserActivityMonitor.HookManager.MouseDown += HookManager_MouseDown;
Gma.UserActivityMonitor.HookManager.MouseUp += HookManager_MouseUp;
方法HookManager_MouseUp和HookManager_MouseDown进入MoveMouse()并制动它。延迟发生在HookManager_MouseUp之前(HookManager_MouseUp几乎瞬间打破了循环)。