Sto provando a simulare un clic del mouse su una finestra. Al momento ho il successo facendo questo come segue (sto usando Python, ma dovrebbe applicarsi a win32 generale):win32: simula un clic senza simulare il movimento del mouse?
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
Questo funziona bene. Tuttavia, se il clic si verifica mentre sto muovendo il mouse manualmente, la posizione del cursore viene eliminata. C'è un modo per inviare un clic direttamente a una determinata coordinata (x,y)
senza spostare il mouse lì? Ho provato qualcosa di simile a quanto segue con non molta fortuna:
nx = x*65535/win32api.GetSystemMetrics(0)
ny = y*65535/win32api.GetSystemMetrics(1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | \
win32con.MOUSEEVENTF_ABSOLUTE,nx,ny)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | \
win32con.MOUSEEVENTF_ABSOLUTE,nx,ny)
Le coordinate che ho sono coordinate assolute, però, non coordinate relative alla posizione della finestra .. PostMessage le trasmetterà come assolute o come relative alla finestra? In realtà, potevo già avere l'hwnd, ma solo tradurre le mie coordinate in '(x - left, y - top)', dove ho ottenuto 'left' e' top' da 'GetWindowRect' non ho cliccato nel punto giusto. – Claudiu
Ah, davvero. È necessario convertire una posizione di clic assoluta nel relativo. Usa ScreenToClient (hWnd, lpPoint) prima di PostMessage – Andrew
ah, ci proverò! c'è qualche diff tra postmessage e sendmessage in questo caso? – Claudiu