2014-02-18 3 views
0

Я хочу, чтобы обрабатывать действия двойного щелчка, нажав left_mouse 2 times.Between 2 щелчка времени, я сплю 100мсКак обращаться с двойным щелчком?

SendInput (LEFT_CLICK ...);
Сон (100);
SendInput (LEFT_CLICK ...);

Это хорошо работает в моем компьютере, но не корректно работает в виртуальной машине Может быть, Существует задержка времени, когда машина делать функцию «SendInput»

Eventhough я удалить «Sleep (100)», It просто кликает 2 раза и не «дважды щелкает», как я хочу.

Как обрабатывать двойной щелчок именно в этом случае

Пожалуйста, предложите мне в любом случае сделать это

Спасибо,

+0

Дубликат: http://stackoverflow.com/questions/5789843/how-i-can-simulate-a-double-mouse-click-on-window-i-khow-handle-on-xy-coord –

+0

Вы должны предоставить код. – manuell

ответ

1

Btw вы должны указать, в какой среде вы работаете и сделать свой кодогенератора бит более подробно. Использование SendInput - это один из вариантов, я не знаю, что вы пытаетесь сделать точно, но я дам вам еще два варианта для моделирования кликов. Нечто подобное будет отлично работает (I код в 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) 

Вы могли бы спать в течение 50 мс между time.sleep (0.05), но это работает для меня без него, и я 'испытал в 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 до вас.

Смежные вопросы