2012-03-29 16 views
0

私は2つの異なるウィンドウ用のスクリプトを作成しています。最初のウィンドウをクリックすると、別のウィンドウの同じ位置にあるクリックが発生します。オートハットキーによるマウスコントロール

問題がある、私のスクリプトは、第二のウィンドウをクリックけど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を使用し、正確に最初のように、第2のウィンドウを配置し、あなたがそれをアクティブにした後、その後、ちょうどClickコマンドを使用することができます。

私が考えることができる唯一の他のものはControlClickのオプションです.XnとYnがあります。これはコントロールに関連しています。すべてのコントロールは実際にウィンドウであり、アプリケーションには1つのコントロール、メインウィンドウしかない場合があります。

サイドノート:スクリプトに中括弧{}は必要ありません。
ループがあるときはホットキーでのみ必要です。multi-line if/else block