Как сделать клик без перемещения курсора?
DllCall не знаю как прописать правильно параметры.
Пробовал разные варианты, используя поиск.
Один из вариантов из поиска, который у меня не работает:
На Win8 х64 не работает. Блокнот запускается, правого клика не происходит.
ControlClick не могу использовать из за Java.
Java UDF пока сложновато для меня, и не ясно рабочая ли, автор 5 лет не появлялся.
Вот функция которую надо исправить, использует MouseClick, от которого требуется отказаться:
DllCall не знаю как прописать правильно параметры.
Пробовал разные варианты, используя поиск.
Один из вариантов из поиска, который у меня не работает:
Код:
;RBUTTONDOWN = 0x0204; // Правая кнопка мыши нажата.
;RBUTTONUP = 0x0205; // Правая кнопка мыши отпущена.
;MOUSEMOVE = 0x0200; // Мышь передвинута.
Run("notepad.exe")
WinWaitActive("Безымянный — Блокнот")
$hWnd = WinGetHandle("[ACTIVE]")
$x = 100; // Координата по X
$y = 100; // Координата по Y
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0200, 'int', 0, 'dword', _WinAPI_MakeLong($X, $Y))
Sleep(50)
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0204, 'int', 1, 'dword', _WinAPI_MakeLong($X, $Y))
Sleep(50)
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0205, 'int', 1, 'dword', _WinAPI_MakeLong($X, $Y))
Func _WinAPI_MakeLong($iLo, $iHi)
Return BitOR(BitShift($iHi, -16), BitAND($iLo, 0xFFFF))
EndFunc ;==>_WinAPI_MakeLong
ControlClick не могу использовать из за Java.
Java UDF пока сложновато для меня, и не ясно рабочая ли, автор 5 лет не появлялся.
Вот функция которую надо исправить, использует MouseClick, от которого требуется отказаться:
Код:
Func _Click($button)
Opt("WinTitleMatchMode", 2); Параметр поиска по тайтлу
Opt("MouseCoordMode", 0); Параметр - вести относительный окна, отсчет координат
$cTab = "SunAwtFrame"; Класс окна
$tTab = "ID=R5"; Уникальная часть тайтла
$hWnd = WinGetHandle("[CLASS:" & $cTab & ";TITLE:" & $tTab & "]") ; Получаем дескриптор окна
WinActivate($hWnd)
$aPos = WinGetPos($hWnd); Получаем координаты и размер окна
; Позиция кнопки всегда одинакова относительно нижнего левого угла окна
$x = 18
$y = $aPos[3] - 70
$aMousePos = MouseGetPos(); Получаем позицию курсора для возврата назад
If $button = "left" Then
MouseClick("left", $x, $y, 1, 0); Совершаем клик левой кнопкой
EndIf
If $button = "right" Then
MouseClick("right", $x, $y, 1, 0); Совершаем клик правой кнопкой
EndIf
MouseMove($aMousePos[0], $aMousePos[1], 0); Возвращаем курсор в исходное положение
EndFunc ;==>_Click
Func _ClickL()
_Click("left")
EndFunc ;==>_ClickL
Func _ClickR()
_Click("right")
EndFunc ;==>_ClickR
HotKeySet("{F5}", _ClickL)
HotKeySet("{F6}", _ClickR)
While 1
Sleep(100)
WEnd