Folgendes habe ich probiert, vielleicht kannst du ja direkt den Fehler erkennen:
Also du willst in der Schleife immer und immer wieder AnyDesk in den Vordergrund bringen und dann "Annehmen" klicken, egal ob das bereits passiert ist.
Das wird so nicht funktionieren.
💡 Im zweiten Parameter "text" welcher bei WinExists, WinActivate und WinWaitActivate optional ist, darf die Klasse nicht rein.
Kannst du bitte mal diese Version an Code ausprobieren:
AutoIt
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Au3Stripper=y
#AutoIt3Wrapper_UseUpx=n
#Au3Stripper_Parameters=/sf /sv /mo /rm /rsln
; ESC = Raus aus der Schleife. Setze die Taste oder Tastenkombination deiner Wahl.
HotKeySet('{ESC}', '_Exit')
Global $bScriptShouldEnd = False
_Actions()
Exit
Func _Exit()
$bScriptShouldEnd = True
EndFunc
Func _Actions()
Local $mAnyDesk[]
$mAnyDesk.ProcessName = 'AnyDesk.exe'
$mAnyDesk.FilePath = 'C:\Program Files (x86)\AnyDesk\AnyDesk.exe'
$mAnyDesk.WindowTitle = 'AnyDesk'
$mAnyDesk.AcceptButton = '[CLASS:basic_button#9; INSTANCE:1]'
While Not $bScriptShouldEnd
If Not ProcessExists($mAnyDesk.ProcessName) Then
Run($mAnyDesk.FilePath)
EndIf
If Not _IsWindowInForegroundWithinThreeSeconds($mAnyDesk.WindowTitle) Then
ContinueLoop
EndIf
ControlClick($mAnyDesk.WindowTitle, '', $mAnyDesk.AcceptButton)
Sleep(500)
WEnd
EndFunc
Func _IsWindowInForegroundWithinThreeSeconds($sWindowTitle)
Local Const $iTimeout = 3
If Not WinWaitActive($sWindowTitle, '', $iTimeout) Then
Return False
EndIf
Return True
EndFunc
Alles anzeigen
Ich gehe hier davon aus, dass ein Fenster mit Titel "AnyDesk" aufpoppt und erst wenn dieses aufpoppt/aktiv/im Vordergrund ist, dann wird der Button "Annehmen" gewählt.
Viele Grüße
Sven