我正在制作一个简单的宏,它将移动光标并单击。但是我的宏需要几秒钟才能获得它想要移动的位置。在这种情况下,它将调用win32的MouseEvent,但光标不会移动或完全不单击。
所以我尝试了下面的简单代码。
def click():
global clickPos
time.sleep(10)
ctypes.windll.user32.SetCursorPos(clickPos[0], clickPos[1])
time.sleep(0.01)
# win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
ctypes.windll.user32.mouse_event(2, 0, 0, 0, 0)
time.sleep(0.01)
# win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
ctypes.windll.user32.mouse_event(4, 0, 0, 0, 0)
我发现它也不能执行鼠标事件。当我没有在代码块中放入“ time.sleep(10)”时,它可以完美地工作。因此,我认为它无法在耗时的任务中执行鼠标事件。什么原因?它与GUI线程有关吗?我该如何解决这个问题?
p.s我是第一次尝试使用win32api库,但是我改为使用ctype希望它可以解决问题,但是得到了相同的结果。