Кстати, вы должны указать, в какой среде вы работаете, и сделать свой код немного более подробным. Использование SendInput — это один из вариантов, я не знаю, что именно вы пытаетесь сделать, но я дам вам еще два варианта для имитации кликов. Что-то вроде этого будет работать нормально (я кодирую на питоне, но это должна быть та же идея):
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)
Вы можете спать в течение 50 мс между time.sleep(0.05), но у меня это работает без него, и я тестировал его на виртуальной машине.
Другой вариант, если вы хотите выполнять тихие щелчки без необходимости перемещать курсор, вы можете отправить сообщение окну, в котором вы хотите щелкнуть, зная дескриптор окна (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 на ваше усмотрение.
person
TheCodingGent
schedule
18.02.2014