Button 自动热键-在窗口中单击某个按钮时触发脚本
我知道实际的按钮手柄。我想检查的是,该按钮是否被单击,以及是否会触发自动热键脚本Button 自动热键-在窗口中单击某个按钮时触发脚本,button,handle,autohotkey,buttonclick,hwnd,Button,Handle,Autohotkey,Buttonclick,Hwnd,我知道实际的按钮手柄。我想检查的是,该按钮是否被单击,以及是否会触发自动热键脚本 提前谢谢 您是否尝试过使用ImgSearch“动态”查找按钮的XY坐标,然后执行if(MouseX=>ImageX和MouseX=ImageX和MouseX=ImageY和MouseY=
提前谢谢 您是否尝试过使用ImgSearch“动态”查找按钮的XY坐标,然后执行if(MouseX=>ImageX和MouseX=
Settimer,FindButton,1000
Settitlematchmode,2
返回
FindButton:
IfWinActive,您的AppWindowTitle
ImageSearch,ImageX,ImageY,0,0,A_屏幕宽度,A_屏幕高度,C:\ButtonImage.bmp
返回
#IfWinActive,您的AppWindowTitle
~LButton::
MouseGetPos,MouseX,MouseY
if(MouseX=>ImageX和MouseX=ImageY和MouseY=
你说得对。你可以用它代替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
这其实不是个坏主意。然而,我宁愿使用该按钮的手柄id,因为它更安全,并且不依赖于坐标(在其他PC上可能会发生变化)。我理解,可能值得寻找id解决方案。我厌倦了用定时器“移动”按钮(不同的屏幕、屏幕上的窗口移动等)来解决问题。
#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