0

私は実際のボタンのハンドルを知っています。そのボタンがクリックされたかどうかを確認したいのですが、クリックされた場合は、自動ホットキースクリプトがトリガーされます。

前もって感謝します!

4

2 に答える 2

0

ImgSearchを使用してボタンのXY座標を「動的に」見つけてから、if(MouseX=>ImageXおよびMouseX=<ImageX + ImageWidth)を実行してみましたか?

擬似コード(テストされていません):

Settimer, FindButton, 1000
Settitlematchmode, 2
Return

FindButton:
IfWinActive, YourAppWindowTitle
    ImageSearch, ImageX, ImageY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\ButtonImage.bmp
Return

#IfWinActive, YourAppWindowTitle
~LButton::
MouseGetPos, MouseX, MouseY
if (MouseX => ImageX and MouseX =< ImageX + ImageWidth)
{
    if (MouseY => ImageY and MouseY =< ImageY + ImageHeight)
    {
        Run your code here
    }
}
Return
#IfWinActive
于 2013-02-28T07:52:41.453 に答える
0

あなたが正しいです。ImgSearchの代わりにこれを使用できます。

ControlGetPos, x, y, w, h, button1, ahk_class CalcFrame
MsgBox, %x% %y% %w% %h%
return

したがって、マウスをクリックするたびにControlGetPosを実行し(ターゲットウィンドウのタイトルがアクティブな場合のみ)、実際のマウス座標をボタンクリック領域と比較する必要があります。

電卓のコードは次のとおりです。

#SingleInstance Force
#Persistent

#IfWinActive, ahk_class CalcFrame
    ~LButton::
    MouseGetPos, MouseX, MouseY
    ControlGetPos, ButtonX, ButtonY, ButtonW, ButtonH, button1, ahk_class CalcFrame
    ButtonX2:=ButtonX + ButtonW
    ButtonY2:=ButtonY + ButtonH
    if MouseX between %ButtonX% and %ButtonX2%
    {
        if MouseY between %ButtonY% and %ButtonY2%
        {
            MsgBox, You pressed the MC button
        }
    }
    Return
#IfWinActive
于 2013-02-28T12:36:16.133 に答える