Ich verwende gerne Mortscript wegen der damit verbundenen Flexibilität.
Für das Wegklicken der STVO-Meldung habe ich bislang immer einen Timer verwendet, der etwas großzügig bemessen war, da die Startzeiten etwas variieren. Nach Ablauf des Timers hat Mortscript einfach den Mausklick simuliert.
Es gibt in Mortscript aber auch die Möglichkeit, einen definierten Bildschirmbereich zu "scannen" und dort z.B. Schwarze Pixel zu finden. Damit lässt sich z.B. die OK-Schaltfläche des STVO-Dialoges sicher finden.
Der Befehl hierzu lautet "ScreenToChars". Einfach mal in der Doku nachlesen.
Ich habe mir dazu einen Screenshot des STVO-Bildschrims erstellt, die Koordinaten der OK-Schaltfläche ermittelt, mir dann mit ScreenToChars das Ergebnis in eine BigMessage ausgeben lassen. Das verwende ich dann in dem eigentlichen Script in einer Schleife als Vergleich, ob die Schaltfläche aktuell auf dem Bildschrim steht.
User mit einem XPERIA (oder anderem Gerät in WVGA-Auflösung), die MN7 auch im Hochformat nutzen, können dieses Script nach Anpassunge der Pfade wahrscheinlich direkt verwenden. Bei mit funktioniert es zuverlässig.
- Startet MN7
- Klickt nach 10Sekunden nochmal auf den Screen um meine automatische Bildschirmsperre zu umgehen (falls auf AKKUBETRIEB)
- Wartet weitere 10 Sekunden (bei mir dauerts mindestens 20Sekunden bis zum STVO-Fenster)
- Sucht dann alle 0,5 Sekunden (maximal 10 Sekunden lang) auf das STVO-Fenster und klickt dieses dann weg.
If(WndExists("Mobile Navigator"))
Show("Mobile Navigator")
Else
Run("\Speicherkarte\Navigon\MobileNavigator.exe")
WaitForActive("Mobile Navigator",120)
If(WndActive("Mobile Navigator"))
#Automatische Tastensperre verhindern
Sleep(10000)
MouseClick(343,612)
#Innerhalb dieser weiteren Zeitspanne lohnt es sich noch nicht das Hinweisfenster zu suchen (zumindest bei mir)
Sleep(10000)
#Nun scannen wir den Bildschirm nach dem Hinweisfenster
Var_ScreenCode = "______######___________##__________####____##########_________##_________####____############________##________####____##############_______##_______####____#####______#####______##______####_____###__________###______##_____####_____###___________###______##____####______###____________###_____##___####_______###____________###_____##__#####_______###____________###_____##########______###____________###_____#####__###______###____________###_____####____###_____###____________###_____###_____####____###___________###______##_______###_____###__________###______##________###____#####______#####______##________####____##############_______##_________###_____############________##_________####_____##########_________##__________###_______######___________##__________####"
i = 0
While ( Var_ScreenCode ne Var_OCRCode AND i < 20)
#Bildschirm auslesen und Wert in String konvertieren
Var_OCRCode = ""
Var_OCR = ScreenToChars( 329, 610, 39, 20, 0,False,"#","_")
ForEach Element in array (Var_OCR)
Var_OCRCode=Var_OCRCode&Element
EndForEach
i = i +1
if (Var_ScreenCode eq Var_OCRCode)
MouseClick(343,612)
EndIf
Sleep(500)
EndWhile
Else
Exit
EndIf
EndIf
Alles anzeigen
Bitte keine Fragen, ob ich das auch für andere Auflösungen erstellen kann, ich möchte hier nur eine Lösungsmöglichkeit für Interessierte aufzeigen und eine Anregung geben.
Viele Grüße, ecky