auoit图像搜索不到

2024/8/3 05:56:14

使用autoit的截屏函数查看能否正常截图到完整屏幕,如果不能截图不完整说明是屏幕缩放问题

#include <ScreenCapture.au3>
Local $screenWidth = @DesktopWidth
Local $screenHeight = @DesktopHeight
_ScreenCapture_Capture(@ScriptDir & "\screenshot.png", 0, 0, $screenWidth-1, $screenHeight-1)

通过以下代码能够解决

#include ".\ImageSearch\ImageSearch.au3"
$sImage = GetFullPath("up_win.png")
Local $screenWidth = @DesktopWidth
Local $screenHeight = @DesktopHeight
$screen_scale = 1 / 1.25 #1.25值取自屏幕缩放为125%
$screenWidth = $screenWidth / $screen_scale
$screenHeight = $screenHeight / $screen_scale
Local $result = _ImageSearchArea($sImage, 1, 0, 0, $screenWidth-1, $screenHeight-1, 0, 0)
If IsArray($result) Then
    $scaledX = $result[0] * $screen_scale
    $scaledY = $result[1] * $screen_scale
    MouseMove($scaledX, $scaledY)
Else
    MsgBox(0, "Error", "Image not found after")
EndIf

这里调用的imgsearch库是来自https://github.com/TheKojukinator/ImageSearch

通过测试,发现在vs中添加外部工具时配置au3就不能识别到位置

最后通过下载新的库解决https://www.autoitscript.com/forum/files/file/471-image-search-udf/这个库不需要dll,只需要将au3文件复制到autoit安装目录下的include文件下

#include <_ImageSearch_UDF.au3>
$sImage = @ScriptDir & "\run.png"
Local $screenWidth = @DesktopWidth
Local $screenHeight = @DesktopHeight
$screen_scale = 1 / 1.25
$screenWidth = $screenWidth / $screen_scale
$screenHeight = $screenHeight / $screen_scale
Local $return = _ImageSearch_Area($sImage,0,0,$screenWidth,$screenHeight)
If $return[0] = 1 Then
    MouseMove($return[1]*$screen_scale, $return[2]*$screen_scale)
EndIf