Autohotkey 如何使用图像搜索自动热键功能等待图像出现在屏幕上

Autohotkey 如何使用图像搜索自动热键功能等待图像出现在屏幕上,autohotkey,Autohotkey,我不熟悉自动热键我知道的很少,我需要在我工作的公司制作一个宏,我需要使用自动热键来制作那个宏 我想做的就是这样。我需要访问停留在我的计算机上的JAVA应用程序,但是这个应用程序需要一些时间才能启动有时速度快有时速度慢我不知道加载需要多长时间 我需要脚本做的是等待我捕获的图像在应用程序加载时出现在屏幕上,而该图像看起来不会一直等到它出现在屏幕上 我研究了很多关于自动热键和imagesearch功能的知识,但我不太了解如何使用它 imagefound := false time_loopStart

我不熟悉自动热键我知道的很少,我需要在我工作的公司制作一个宏,我需要使用自动热键来制作那个宏

我想做的就是这样。我需要访问停留在我的计算机上的JAVA应用程序,但是这个应用程序需要一些时间才能启动有时速度快有时速度慢我不知道加载需要多长时间

我需要脚本做的是等待我捕获的图像在应用程序加载时出现在屏幕上,而该图像看起来不会一直等到它出现在屏幕上

我研究了很多关于自动热键和imagesearch功能的知识,但我不太了解如何使用它

imagefound := false
time_loopStart := A_TickCount
timeout := 6000
sleep_after_each_imagesearch := 300
CoordMode, Pixel
Loop{
     ImageSearch x,y, A_ScreenWidth, A_ScreenHeight, C:\test\Javalogin.png
     if ErrorLevel = 0{
        imagefound := true
        break
  }
  if(A_TickCount - time_loopSart > timeout){
     break

  }
  sleep %sleep_after_each_imagesearch%
}
MsgBox, I found the picture
这是我在网上找到的脚本

我接受建议,如果脚本需要重做等

我只需要让脚本等待图像出现


如果你有人帮忙,我会留下我的感谢:)

这是我正在使用的类似脚本

基本上,它会查找图片,如果 找到它,它把它在OutputVarX&OutputVarie中找到它的坐标放在那里。 如果找不到,则值为0

Loop,
{
   ; first two store the found position, next 4 as the search area in pixels, then the file.
   ImageSearch, OutputVarX, OutputVarY, 0, 0, 600, 600, e:\play.bmp

   ; "0" means no match
   if (OutputVarX > 0) { 

       msgbox, %OutputVarX%, %OutputVarY%
       break

   }

   sleep, 200 
} 
一些提示:

  • 制作计算机屏幕截图,显示图像。将其裁剪为元素的大小,然后将其解压保存。查找原始png文件可能会失败 如果它以某种方式呈现
  • 阅读有关ImageSearch的帮助,了解如何允许图像略有不同

@OP-我有一个ImageSearch扩展包装,我设计并使用了几年。它提供了您正在寻找的等待以及本机ImageSearch命令缺少的许多其他功能。它是我多年来编写的大多数自动热键实用程序的主干。我正在添加一些附加功能,并决定很快将其发布(可能在GitHub上)。如果有兴趣,请告诉我

以下是支持的功能

  • 支持用户定义的等待时间(以秒为单位超时),以便在停止搜索之前在屏幕上查找图像(带有可见的倒计时)
  • 支持同时搜索多个图像的能力-在“或”模式下(和正在开发的模式下)
  • 可以为搜索列表中的每个图像设置唯一的搜索条件
  • 支持在搜索之前验证磁盘上的ImageFile路径,并提供通知(调试帮助)
  • 支持本机图像搜索选项
  • 中止对长搜索的支持(在调试期间特别有用)

  • 稍后我会花更多的时间来讨论这个问题,但是一开始,就出现了一个输入错误,
    ErrorLevel
    (您有“ErrorLebel”)。if语句中的另一个输入错误——“time\u loopSart”应该是我猜的“time\u loopStart”。是的,这是我的错误输出变量为0意味着它位于坐标0处。如果没有匹配的,它们是空的。检查它们是否为空,或者只使用
    ErrorLevel
    。它们也可能是负面的。同时也协调了需要提及的内容。似乎现在使用的默认coordmode不适合在这种情况下使用。如果您不共享代码,这将没有多大帮助。