Управление мышью с помощью autohotkey - PullRequest
0 голосов
/ 29 марта 2012

Я делаю скрипт для двух разных окон, и когда я нажимаю на первое окно, происходит щелчок в той же позиции в другом окне.

Проблема в том, что мой скрипт выполняет клик, но ось x во втором окне всегда 0 ... и я не знаю, почему

Может быть, у вас есть решение или другой способ написания сценария?

Это мой сценарий:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn  ; Recommended for catching common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

;retrouver les id de 2 fenetres
WinGet, first_id, ID, window1 
WinGet, sec_id, ID, window2

;activation des fenetres
WinActivate, ahk_id %sec_id%
WinActivate, ahk_id %first_id%

; fonction pour quitter la macro
~Esc::ExitApp 
return

;test repeter clic souris
;LeftClic
~LButton::
{
    MouseGetPos, xposi, yposi 
    ControlClick, x%xposi% y%yposi%, ahk_id %first_id%,,LEFT

    WinActivate, ahk_id %sec_id%
    ControlClick, x%xposi% y%yposi%, ahk_id %sec_id%,,LEFT

    WinActivate, ahk_id %first_id%
    MouseMove, xposi, yposi 
}
return

1 Ответ

0 голосов
/ 29 марта 2012

Прежде всего, процитировать документацию для MouseGetPos :

Полученные координаты относятся к активному окну, если CoordMode не использовался для перехода к экранным координатам.

Это означает, что оно относится к первому окну.

Если эти окна не идентичны (во всяком случае), шансы на эту работу для вас невелики.

Спри этом, если они идентичны, вы можете изменить CoordMode на Screen и использовать WinMove , чтобы изменить размер и расположить второе окно точно так же, как первое, после его активации, а затем просто используйте Нажмите команду.

Единственное, что я могу вспомнить, это посмотреть опции ControlClick , и вы увидите, что есть Xn и Yn, что относительнок контролю.Каждый элемент управления фактически является окном, и иногда приложение имеет только один элемент управления - главное окно.

Примечание: вам не понадобятся фигурные скобки {} в вашем скрипте.
Они нужны только в горячей клавише, когда у вас есть цикл или многострочный блок if / else.

...