目前有几个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%\..ImagesUsersIcon.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%\..ImagesChangeUserIcon.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%\..ImagesAdministrator.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%\..ImagesLogIn1.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%\..ImagesLogIn2.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%\..ImagesLogIn3.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%\..ImagesLogIn4.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%\..ImagesAccept.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
'
A_ScreenWidth或A_ScreenHeight并不总是适用于[多个监视器],如果您现在同时具有分辨率,您可以尝试计算并手动放置这些值-例如监视器1和2-将A_ScreenWidth替换为3840(1920+1920=3840)[或/和]将A_ScrenHeight替换为2160(1080+1080)-如果这没有帮助,您可以试着更改NVIDIA CONTROL PANEL中的3d设置,例如禁用抗锯齿。(比较一下,看看你的朋友是否和你有同样的设置。)
我刚刚发现了这个实用程序FindText,根据我的经验,它比使用ImageSearch更高效。