我想通过点击left_mouse 2次来处理动作双击。在2次点击时间之间,我睡了100ms
SendInput(LEFT_CLICK ...);
睡眠(100);
SendInput(LEFT_CLICK ...);
它在我的电脑上运行正常,但在虚拟机中无法正常工作 可能是,当机器执行“SendInput”功能时有一个延迟时间发生,尽管我删除了“Sleep(100)”,它只是点击了2次而没有“双击”我想要的
如何在这种情况下完全处理双击
无论如何,请建议我这样做
谢谢,
答案 0 :(得分:1)
顺便说一下,您应该指定您正在使用的环境,并使您的代码更加详细。使用SendInput是一个选项,我不知道你想要做什么,但我会再给你两个选项来尝试模拟点击。像这样的东西可以正常工作(我在python中编码,但它应该是相同的想法):
def leftClick(x=0, y=0):
win32api.SetCursorPos((x,y)) #set the cursor to where you wanna click
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0) #generate a mouse event
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)
return True
def doubleClick(x=0, y=0):
leftClick(x,y)
leftClick(x,y)
你可以在time.sleep(0.05)之间睡50个小时,但是如果没有它你就能正常工作,我已经在vm中测试了。
另一个选项如果你想在不必移动光标的情况下执行无声点击,你可以向你想要点击的窗口发送一条消息,知道窗口句柄(hwnd),这里我假设你将句柄作为参数传递
def leftClick(x=0, y=0, hwnd):
lParam = win32api.MAKELONG(x,y) # create a c long type to hold your click coordinates
win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lparam) # send a message to the window that the mouse left button is down.
win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, 0, lparam) # send a message to the window that the mouse left button is up.
return True
def doubleClick(x=0, y=0, hwnd):
leftClick(x,y, hwnd)
leftClick(x,y, hwnd)
或者您可以发送消息WM_LBUTTONDBLCLK给您。