2017-11-14 4 views
1

Momentan gibt es ein paar ImageSearch AHKScripts zum Klicken auf Bilder in einer GUI. Diese GUI wird auf mehreren Bildschirmgrößen verwendet (Laptops, größere Monitore, vertikale Monitore usw.). Die Skripte laufen ohne Probleme auf meinem Laptop und Monitor, solange die Skalierung für jeden Monitor gleich eingestellt ist (100% oder 125%). Ich habe versucht, diese Skripte mit einem Freund zu teilen, damit er sie auf seinem Laptop benutzen kann, aber die Bilder können nicht gefunden werden. Wir verwenden die gleichen Auflösungseinstellungen (1920x1080), beide Laptops verwenden Skalierungseinstellungen von 100%, beide Laptops sind von der gleichen Marke und sehr ähnlichem Modell, aber verwenden leicht unterschiedliche Grafikkarten. (Intel HD Graphics 520 vs Intel HD Graphics 530). Wir können visuell einen leichten Farbunterschied auf seinem Monitor im Vergleich zu meinem sehen und haben versucht, dies so nah wie möglich einzustellen, aber diese Änderungen scheinen die Bildsuchleistung nicht zu beeinträchtigen. Wir haben versucht, ICM-Farbprofildateien von anderen Laptops zu kopieren und haben immer noch kein Glück. Gibt es einen Work-a-round, den jeder kennt, sodass wir keine Bilder von jedem Bildschirm, auf dem wir diese Skripte verwenden, implementieren müssen? Ich habe auch mit den "* N Variation" Parametern von * 50- * 200 ohne Glück gespielt. Alle und alle Vorschläge werden sehr geschätzt, danke.ImageSearch funktioniert nicht auf verschiedenen Displays

' 
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 
' 

Antwort

0

A_ScreenWidth oder A_ScreenHeight immer auf [Mehrere Monitore] nicht funktioniert, wenn Sie beide Auflösung jetzt können Sie versuchen, und die manuell diese Werte setzen zu berechnen - Beispiel 1 überwachen und 2 -replace A_ScreenWidth in 3840 (1920 + 1920 = 3840) [oder/und] ersetzen Sie A_ScreenHeight in 2160 (1080 + 1080) - wenn dies nicht hilft, können Sie versuchen, die 3D-Einstellungen im NVIDIA CONTROL PANEL zu ändern, um beispielsweise Anti-Aliasing zu deaktivieren. (Vergleichen Sie es, und schauen Sie, ob Ihr Freund die gleichen Einstellungen wie Sie hat.)

+0

Danke, haben versucht, die Breite und Höhe Parameter wie Sie vorgeschlagen, ohne Änderung der ImageSearch-Leistung. Außerdem scheinen unsere NVIDIA Control Panel-Einstellungen identisch zu sein. – StevieP

+0

1 - Was sind die Breite und Höhe Parameter, es muss ** x3840 y1080 ** oder ** x1920 y2160 ** - 2 - haben Sie versucht, Anti-Aliasing 3 zu deaktivieren - haben Sie das gleiche Beispiel: Windows 10 64/32bit systems 4 - und haben Sie die gleichen HDMI/DVI/DISPLAY-Kabel an den zweiten Monitor angeschlossen. Sie haben gesagt, Sie haben einen leichten Farbunterschied auf seinem Monitor im Vergleich zu meinem, die Fahrer können anders arbeiten. – stevecody

+0

1.Wir versuchten Skripte mit x3840 y1080 sowie x1920 y2160 ohne Glück. 2. Beide System haben Anti-Aliasing deaktiviert 3. Beide Systeme sind 32bit-Systeme 4. Ab sofort arbeiten wir von Laptops, um diese Bildschirme zuerst zu arbeiten, bevor Sie unsere externen Monitore verwenden. – StevieP

Verwandte Themen