我需要点击一个非活动窗口上的位置。该窗口在所述坐标处没有任何可点击的控件。
CoordMode, Mouse, Screen
SetControlDelay -1
ControlClick, x636 y189,WindowTitle,,,, NA Pos
每次我运行上面的代码时,它都不会点击我指定的位置。无论窗口是否处于活动状态,它都会点击我当前的鼠标位置。
答案 0 :(得分:3)
更多想法:
更新您的AHK:
https://autohotkey.com/download/ahk-install.exe
以管理员身份运行您的脚本:
If not A_IsAdmin ;force the script to run as admin
{
Run *RunAs "%A_ScriptFullPath%"
ExitApp
}
PostClick(636,189,"WindowTitle")
PostClick(x,y,win="A") {
lParam := x & 0xFFFF | (y & 0xFFFF) << 16
PostMessage, 0x201, , %lParam%, , %win% ;WM_LBUTTONDOWN
PostMessage, 0x202, , %lParam%, , %win% ;WM_LBUTTONUP
}
答案 1 :(得分:2)
喔。如果窗口中没有控件可以单击这些坐标,那么ControlClick
将不起作用。请改用简单的MouseClick
命令。如果您每次都没有相同的xy坐标,例如,因为窗口移动,您可以使用WinGetPos
查询窗口位置,然后将坐标传递给MouseClick
作为基于的变量结果。
WinGetPos, Xp, Yp, Wi, He, WindowTitle
MouseClick, left, %Xp% + 636, %Yp% + 189
答案 2 :(得分:0)
有几件事。不应使用CoordMode
(除非出于其他原因),因为它不会影响ControlClick
的定位 - 它始终相对于您使用的WindowTitle
窗口。
可能会将SetTitleMatchMode
设置为2
,因为您没有使用完全正确的WindowTitle
文字;此外,如果您的窗口类似于Citrix XenApp窗口,则可能必须处理另一个标识目标窗口的标准(see WinTitle
in help)。
此外,您可以尝试识别并使用ClassNN
(控件的类名和实例编号)或控件的名称/文本,这两者都可以通过Window Spy确定。
最后,您是否在最后没有Pos
的情况下尝试了?这主要用于控件类与x y位置冲突时。如果您使用正确的窗口标题或其他标准,您也可以在WindowTitle
ControlClick, x636 y189, WindowTitle
之后没有任何内容尝试它(注意空格)应该自行工作:
SetTitleMatchMode, 2
SetControlDelay -1
ControlClick, x636 y189, WindowTitle,,,, NA
或
SetTitleMatchMode, 2
SetControlDelay -1
ControlClick, x636 y189, WindowTitle