ImageSearch无法在不同的显示器上工作

时间:2017-11-14 21:27:21

标签: image image-processing graphics autohotkey systemcolors

目前有一些ImageSearch AHKScripts用于点击GUI中的图像。此GUI用于多种屏幕尺寸(笔记本电脑,大型显示器,垂直显示器等)。只要在每个显示器之间设置相同的缩放比例(100%或125%),脚本在我的笔记本电脑和显示器上运行时都没有问题。我尝试与朋友分享这些脚本,以便他可以在他的笔记本电脑上使用它们,但无法找到图像。我们使用相同的分辨率设置(1920x1080),两台笔记本电脑都使用100%缩放设置,两台笔记本电脑都是相同的品牌和非常相似的型号,但使用略有不同的图形卡。 (英特尔高清显卡520与英特尔高清显卡530)。与我的相比,我们可以直观地看到他的显示器上有轻微的色差,并试图尽可能接近地调整它,但这些变化似乎不会影响图像搜索性能。我们已经尝试从另一台笔记本电脑复制ICM颜色配置文件,但仍然没有运气。是否有任何人都知道的工作,所以我们不需要在我们使用这些脚本的每个显示器上实现图像?我玩* 50- * 200的“* N变化”参数也没有任何运气。非常感谢任何和所有建议,谢谢。

'
IfWinExist, GUI
{    
    WinActivate  ; Automatically uses the window found above.

ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\UsersIcon.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}

Sleep, 3500

ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\ChangeUserIcon.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}

Sleep, 500

ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\Administrator.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}

Sleep, 100

ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\LogIn1.png
if (!errorlevel){
Click %foundX%, %foundY%, 1
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}



ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\LogIn2.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}



ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\LogIn3.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}


ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\LogIn4.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}


Send {WheelDown 5}

Sleep, 500

ImageSearch, foundX, foundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 %A_ScriptDir%\\..\Images\Accept.png
if (!errorlevel){
Click %foundX%, %foundY%
}else if (ErrorLevel == 1){
MsgBox, Image cannot be found
}else{
MsgBox, Cannot Conduct Search
}
Send {WheelUp 3}
}




ExitApp

esc::ExitApp
'

2 个答案:

答案 0 :(得分:0)

A_ScreenWidth或A_ScreenHeight并不总是适用于[多个监视器],如果您现在两个分辨率都可以尝试计算并手动放置这些值 - 示例监视器1和2 - 将A_ScreenWidth替换为3840(1920 + 1920) = 3840) [或/和] 将A_ScreenHeight替换为2160(1080 + 1080) - 如果这没有帮助,您可以尝试更改NVIDIA CONTROL PANEL中的3d设置,例如禁用抗锯齿。 (比较它,看看你的朋友是否有与你相同的设置。)

答案 1 :(得分:0)

我刚刚发现了这个实用程序 FindText,根据我的经验,它比使用 ImageSearch 更有效。