Hallo
Ich bin ganz neu hier und möchte gern ein Programm schreiben was den Focus kontrolliert und wenn das Programm nicht den Focus hat, bekommt es den Focus wieder zugewiesen. Ist das mit AutoIt möglich. Das Programm was ich kontrollieren will ist RideRunner.exe.
Kann mir da jemand paar Anhalts Punkte geben wie es funktionieren kann.
Programm Focus kontrollieren und übergeben
-
raz4taz -
16. September 2015 um 14:19 -
Erledigt
-
-
WinActivate könnte dir helfen, WinSetOnTop auch...
-
Vielen Dank erstmal, hab mich jetzt mal bisschen belesen und schon was zusammen gesucht.
Jetzt fehlt mir noch wie ich das ganze in einer Endlosschleife laufen lassen kann und wie ich das Skript
beenden kann wenn das Programm geschlossen wird.
Hier mal was ich bis jetzt schon habe.C
Alles anzeigenWinWaitActive("[CLASS:ThunderRT6FormDC]", "",) Example() Func Example() Local $hWnd = WinWait("[CLASS:ThunderRT6FormDC]", "",) WinActivate($hWnd) EndFunc ;==>Example #include <AutoItConstants.au3> Example() Func Example() ; Set the active window as being ontop using the handle returned by WinGetHandle. WinSetOnTop($hWnd, "", $WINDOWS_ONTOP) EndFunc ;==>Example
-
Entspricht das deinen Vorstellungen? Ich kann es leider grade nicht Testen.
AutoIt
Alles anzeigen; Ok wer Englisch versteht für den sollte es leicht zu verstehen sein, ; solange das Fenster exestiert wird alles zwischen ; "While" und "WEnd" wiederholt. While WinExists("[CLASS:ThunderRT6FormDC]") ; Die folgende Codezeile ist wieder ganz einfach ; "If Not WinActive("[CLASS:ThunderRT6FormDC]") Then" bedeutet einfach: ; Wenn das Fenster NICHT aktiv ist dann... ; Danach folgt der Befehl der den Fokus wieder zurück an das Fenster gibt. If Not WinActive("[CLASS:ThunderRT6FormDC]") Then WinActivate("[CLASS:ThunderRT6FormDC]") ; Sleep sorgt einfach nur für eine niedrigere Auslastung. sleep(50) ; "WEnd" sorgt dafür das das Script zurück zu While springt und ; von vorne beginnt, solange bis das Fenster geschlossen wird. WEnd
-
Danke für die schnelle Hilfe. Habe das Skript mal ausprobiert und es holt das Programm schon in Vordergrund wenn ein anderes drüber liegt. Nun ist nur noch das Problem das es keine Tastenbefehle empfängt, muss es vorher immer mit der Maus noch anklicken.
Kann man da noch was machen?
Edit:Das hab ich jetzt mal probiert:AutoIt
Alles anzeigenWhile WinExists("[CLASS:ThunderRT6FormDC]") ; Die folgende Codezeile ist wieder ganz einfach ; "If Not WinActive("[CLASS:ThunderRT6FormDC]") Then" bedeutet einfach: ; Wenn das Fenster NICHT aktiv ist dann... ; Danach folgt der Befehl der den Fokus wieder zurück an das Fenster gibt. While Not WinActive("[CLASS:ThunderRT6FormDC]") WinActivate("[CLASS:ThunderRT6FormDC]") Sleep(200) MouseMove(50, 50, 0) Sleep(50) MouseClick ("left") WEnd ; Sleep sorgt einfach nur für eine niedrigere Auslastung. sleep(2000) ; "WEnd" sorgt dafür das das Script zurück zu While springt und ; von vorne beginnt, solange bis das Fenster geschlossen wird. WEnd
Aber irgendwas ist da noch verkehrt, die Befehle MouseMove und MouseClick werden nicht ausgeführt.
Mit ControllClick kann ich auch nichts machen weil es keine ControllID in den Programm gibt.