ich benutze einen barcode scanner der Felder in einer GUI füllt. Der Barcode wird immer mit einem Enter abgeschlossen. Also benutze ich diese Funktion, damit innerhalb der gui mit enter in das nächste Feld gesprungen wird und in allen anderen Fenstern einfach ENTER gesendet wird:
Spoiler anzeigen
HotKeySet("{ENTER}", "_do")
[/autoit] [autoit][/autoit] [autoit]Func _do() ;wenn das Feld moveto gewählt ist wird Enter zur funktion Button Save. und drückt down, damit der Ort angezeigt wird.
If ControlGetFocus("Barcode Erfassung - V" & $version) = "Edit3" Then
$test = StringLeft(GUICtrlRead($inp_moveto), 5)
if $test < 25000 OR $test > 25999 Then
Beep(250, 200)
MsgBox(16, "read error", "Please, reset the form and scan the Barcode again.")
GUISetState(@SW_HIDE, $main_form_1)
_main()
Else
sleep(200)
send("{DOWN}")
GUICtrlSetState($inp_barcode, $GUI_FOCUS)
Beep(2000, 100)
EndIf
Else
HotKeySet("{Enter}")
Send("{Enter}")
HotKeySet("{Enter}", "_do")
EndIf
EndFunc ;==>_do
Das Funktioniert in den meisten Anwendungen auch sehr gut. Es scheinen die Std. Windows Anwendungen damit klar zu kommen, allerdings gibt es eine Anwendungen von Fa. CPA (Australien), die das Enter durch den Hotkeyset nicht verschluckt, sondern ganz normal ausführt und dann natürlich das Send("{Enter}") nochmal als Enter annimmt. Was ziemllich blöd ist, weil dann zweimal Enter gedrückt wird.
Hat sowas ähnlichen schonmal jemand beobachtet?
Ich habe dann versucht die Fenster der Problem Software einfach aus zu schließen, indem ich mit
[autoit]if winactive("titel") usw...
[/autoit]Allerdings hat der Titel der Problem Anwendung nie eine Konstaten Teil.
Hat jemand einen Tipp für mich?
Habe auch versucht das mit Hotstring.au3 also Hotstringset zu lösen, aber da kann man scheinbar nur Buchstaben eingeben, denn {Enter} nimmt er leider nicht. Hotstringset hätte den Vorteil, dass es die Enter taste nicht löscht, wie Hotkeyset.