我正在编写一个脚本,它会自动点击扑克游戏大厅的等候名单按钮。我试过点击x,y并且它有效,但问题是如果焦点从大厅切换到桌面,点击加注/呼叫按钮 - 灾难。
寻找解决方案,我发现ControlClick可以为我完成这项工作,但我无法让脚本工作。我读到有关ControlClick的parameters needed工作,并使用我使用WindowSpy找到的参数的不同组合,我无法让脚本工作。
以下是我已尝试的一些行 -
a::
SetControlDelay -1
ControlClick PokerStarsButtonClass34, PokerStars Lobby, Waiting List
return
a::
SetControlDelay -1
ControlClick x900 y65, Pokerstars Lobby, Waiting List
return
你可以帮我解决这个问题 - 谢谢
答案 0 :(得分:2)
首先,我会尝试省略ControlClick
调用的WinText参数(这意味着删除尾随的“等待列表”),因为我不确定Stars Lobby是否真的将该文本作为其中的一部分通过窗口间谍可见的文字。 WinTitle应该足够了。
如果您搜索AHK论坛,您会发现有很多人抱怨ControlClick
没有正确地向按钮或窗口发送点击。所以你的问题不是唯一的。
现在,afaik ControlClick
只是发送WM_LBUTTONDOWN
消息的包装器。但是,在某些情况下,当ControlClick
失败时,直接发送邮件确实有效。实际上,此功能通常用于为Pokerstars设计的AHK脚本。
PostLeftClick(x, y, hwnd) {
PostMessage, 0x201, 0x0001, ((y<<16)^x), , ahk_id%hwnd% ;WM_LBUTTONDOWN=0x201
PostMessage, 0x202 , 0, ((y<<16)^x), , ahk_id%hwnd% ;WM_LBUTTONUP=0x202
}
所以你可以尝试上面的功能,看看它是否有效。您需要首先获取大厅的句柄,使用类似lobbyhwnd := WinExist("Pokerstars Lobby")
的内容,然后将lobbyhwnd
作为第三个参数传递给上述函数。
如果它不起作用,我建议正常使用Click
,但在发送点击之前明确激活大厅,这样你可以确定点击被发送到正确的窗口。例如:
a::
WinActivate, Pokerstars Lobby
Click x900, y65
return