2012-03-29 114 views
0

我正在为2个不同的窗口创建一个脚本,当我点击第一个窗口时,会在另一个窗口的相同位置发生点击。使用autohotkey进行鼠标控制

的问题是,我的脚本进行点击,但在第二窗口上的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 

回答

0

首先,引用文档为MouseGetPos:除非 CoordMode被用来改变

检索到的坐标是相对于当前活动窗口屏幕坐标。

这意味着它是相对于第一个窗口。

如果这些窗口不相同(无论如何),这对你的工作机会很渺茫。

随着中说,如果它们是相同的,你可以改变CoordMode筛选和使用WinMove大小和作为第一个第二个窗口中准确定位,激活后它,然后只需使用Click命令。

我能想到的唯一的其他事情就是看ControlClick的选项,你会看到Xn和Yn,它们与控件有关。每个控件实际上都是一个窗口,有时一个应用程序只有一个控件,即主窗口。

旁注:脚本中不需要大括号{}。
只有当您有循环或multi-line if/else block时,才需要它们。