Das will noch nicht so. Hängt bissel. Welcher Befehl aus der UDF wäre da hilfreich?
Beiträge von AutoITier
-
-
Noch wer eine Idee? Oder ist hier diese Schleife an sich falsch?
-
Hallo zusammen,
in einer Windows-Domäne kann es gerade bei Notebooks in Verbindung mit VPN passieren, dass die Kennwörter nicht auf allen Rechnern aktuell sind, wenn es auf einem anderen Gerät geändert wurde. Was man dann tun muss, ist ganz einfach: Computer sperren und unter Verwendung des korrekten Passwortes die Sperrung aufheben.
Windows teilt dies auch mit - aber leider nur in Form einer Ballonmeldung in der Taskleiste:
[Blockierte Grafik: http://blog.schatenseite.de/wp-content/uploads/2010/09/100924_windows.jpg]
Wie würdet ihr das Erscheinen dieser Meldung am Geschicktesten in einem Skript, was bei den Anwendern dauerhaft im Hintergrund als While-Schleife laufen soll, abfangen?
Bin gespannt auf eure Ideen!
Danke !
-
Danke, klasse!
Mir ist nun aufgefallen, dass der tatsächlich wartet, bis die Schleife 5 Sekunden lang durch ist, auch wenn zuvor schon
[autoit]WinWait("PW-Anmeldung")
[/autoit]erscheint.
Kann man so eine Schleife eigentlich auch an so ein Ereignis knüpfen? Also: mach die Schleife so lange, bis das Dialogfeld "PW-Anmeldung" erkannt wird?
-
Hallo auch,
vielen Dank für die flotte Antwort
Klappt einwandfrei!Nun stehe ich leider noch vor dem Problem, dass ich zu Beginn des Skriptes, also nachdem die EXE angestartet wird, auf Fehlermeldungen prüfen möchte, welche nur zu diesem Zeitpunkt bzw. so ca. 5 Sekunden danach aufkommen können (z.B. Datenbankverbindung nicht da etc.). Da ich hier lediglich den Dialog bzw. das PopUp abfange und nicht auf Inhalte achte, darf dieser Teil nicht in der generellen While-Schleife sein. Doch wie bekomme ich diese beiden Prüfungen so zu Beginn für ca. 5 Sekunden unter? Eine ist klar, aber zwei ?
[autoit]$ret2 = WinWaitActive("[CLASS:TFrmPopErrorDlg]", "" , 1)
[/autoit][autoit][/autoit][autoit]If not $ret2 = 0 Then
[/autoit][autoit][/autoit][autoit]
MsgBox(0, "Fehler aufgetreten", "Fehler aufgetreten")
Send("{ESC}")
Send("{ESC}")
ExitElse
[/autoit][autoit][/autoit][autoit]
EndIf$ret1 = WinWaitActive("[CLASS:TMessageForm]", "" , 1)
[/autoit][autoit][/autoit][autoit]If not $ret1 = 0 Then
[/autoit][autoit][/autoit][autoit]
MsgBox(0, "Fehler aufgetreten", "Fehler aufgetreten")
Send("{ESC}")
Send("{ESC}")
ExitElse
[/autoit]
EndIf -
Hallo zusammen,
ich baue ein AutoIT-Skript, welches als SingleSignOn-Modul dienen soll. Soweit, so gut.
Was ich will, ist, dass dauernd auf das hier geprüft wird, damit das Skript sauber beendet wird, sobald die eigentliche Exe auch geschlossen wurde:
[autoit]While 1
[/autoit]
ProcessWaitClose($PID)
msgbox(0,"ende","ende")
Exit
WEndUnd dies hier, damit der User im Programm nicht selbst das Passwort ändern kann:
[autoit]
[/autoit]
WinWaitActive("[CLASS:TFrmDBValidatePassword]", "")
Send("{ESC}")
Send("{ESC}")
msgbox(0,"jjjj","jjjj")Wie würdet ihr das am besten realisieren, sprich dass diese beiden Blöcke dauerhaft abgefragt werden (und auch nicht das eine vom anderen abhängt!)?
Danke !!!
Unten das gesamte Skript:
[autoit]$PID = run ("c:\popwin\client\PW.exe")
[/autoit][autoit][/autoit][autoit]
WinWait("PW-Anmeldung")
BlockInput(1)
ControlSend("PW-Anmeldung", "", "[CLASS:TEdit; INSTANCE:2]",@Username)
ControlSend("PW-Anmeldung", "", "[CLASS:TEdit; INSTANCE:1]", "testtesttest")
Send("{ENTER}")
BLOCKINPUT(0)
$ret = WinWaitActive("[CLASS:TMessageForm]", "" , 1 )If not $ret = 0 Then
[/autoit][autoit][/autoit][autoit]
MsgBox(0, "Fehler aufgetreten", "Fehler aufgetreten")
Send("{ESC}")
Send("{ESC}")Else
[/autoit][autoit][/autoit][autoit]
EndIf
WinWaitActive("[CLASS:TFrmDBValidatePassword]", "")
Send("{ESC}")
Send("{ESC}")
msgbox(0,"jjjj","jjjj")While 1
[/autoit]
ProcessWaitClose($PID)
msgbox(0,"ende","ende")
Exit
WEnd