【问题标题】:AHK Script using PostClick and PostMessage使用 PostClick 和 PostMessage 的 AHK 脚本
【发布时间】:2018-12-12 06:16:16
【问题描述】:

我正在尝试编写一个简单的 AHK 脚本来键入几个字符并在背景窗口中的特定坐标处单击几下,但我似乎无法让它工作,而且我找不到很多关于如何正确使用 PostClick 的信息。

当窗口处于活动状态时,我能够使用Click 使其工作。还尝试使用 ControlClick,它似乎可以工作,除了单击发生在鼠标所在的位置而不是提供的坐标上(并且仅在再次激活窗口时)。

我可以就如何让它发挥作用获得一些帮助/建议吗?

这是我当前的脚本:

DetectHiddenWindows On

S:: ;Character to start the loop
pid = 19164 ;Application PID
ControlGet, clickVar, Hwnd , , ahk_pid %pid% ;Specify control for which program

BreakLoop = 0
Loop, 3 {
  if (BreakLoop = 1)
  break 
  Sleep 1000
  PostClick(clickVar,1055,525)
    {
      ControlSend,, 3, ahk_pid %pid%
      lParam := x & 0xFFFF | (y & 0xFFFF) << 16 
      PostMessage, 0x201, , %lParam%, , ahk_pid %pid% ;WM_LBUTTONDOWN 
      PostMessage, 0x202, , %lParam%, , ahk_pid %pid% ;WM_LBUTTONUP 
    }
  Sleep 1500
}

E::
BreakLoop = 1

return

提前感谢您的帮助。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    我假设您正在尝试使用this function

    我不确定这个函数是如何工作的,但我认为你想要的是这样的:

    DetectHiddenWindows On
    
    S:: ;Character to start the loop
    pid = 19164 ;Application PID
    ControlGet, clickVar, Hwnd , , ahk_pid %pid% ;Specify control for which program
    WinGetTitle, clickTitle, ahk_pid %pid%
    WinGetClass, clickClass, ahk_pid %pid%
    BreakLoop = 0
    Loop, 3
    {
      if (BreakLoop = 1)
      break 
      Sleep 1000
      PostClick(1055,525,clickClass, clickTitle)
      ControlSend,, 3, ahk_pid %pid%
      Sleep 1500
    }
    
    E::
    BreakLoop = 1
    
    return
    
    PostClick(x, y, class, title) 
    {
      lParam := x & 0xFFFF | (y & 0xFFFF) << 16 
      PostMessage, 0x201, 1, %lParam%, %class%, %title% ;WM_LBUTTONDOWN 
      PostMessage, 0x202, 0, %lParam%, %class%, %title% ;WM_LBUTTONUP 
    }
    

    您需要将该函数放在同一个文件中的某个位置,或者至少可以由当前文件访问。您可以在文件顶部执行#include &lt;script name here&gt;.ahk,然后根据需要将该函数作为新文件放在同一目录中。

    您尝试使用的函数包含一个 x 和一个 y,用于在该窗口中单击的位置。然后它还接受一个类和标题,以便知道实际使用哪个窗口。希望这对您有用或对您有所帮助。

    【讨论】:

    • 感谢 Reasel。我仍然无法让脚本按预期运行(可能是因为这些帖子类型被实际程序阻止了),但这个答案非常有帮助,并指出了我正在做的缺陷。
    • 如果你确实让它工作,请更新你的帖子!我很想能够做你正在尝试的事情。
    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多