2012-03-29 83 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時,才需要它們。