Mein Programm sollte eine Funktion aufrufen, falls ein bestimmtes Dialogfenster auftaucht.
Ist WinExists hier richtig? Wie würde das einbauen?
Mein Programm sollte eine Funktion aufrufen, falls ein bestimmtes Dialogfenster auftaucht.
Ist WinExists hier richtig? Wie würde das einbauen?
While WinExists("DeinFenste") = 0
Sleep(500)
WEnd
oder einfach die Funktion WinWait nehmen
Ich habe es wahrscheinlich falsch erklärt, entschuldigung.
Das Programm sollte laufen, und während es läuft sollt es drauf achten ob ein bestimmtes Fenster auftaucht, und dann drauf reagieren.
Bis her habe ich es so versucht
[autoit]If WinExists( "Active Directory" , "Der ausgewählte Anmeldename des Benutzers wird in dieser Organisation bereits") Then
MsgBox(0, "Benutzer existiert bereits", "Der Benutzername ist bereits vergeben")
Exit
EndIf
Leider ohne Erfolg.
Ich habe das Gefühl, dass es mit einer einfachen IF - Funktion nicht getan ist. Weil dann prüft es an der Stelle, wo die Funktion dran ist, obs da ist, und wenn nicht, läuft es einfach weiter und ruft es nicht mehr auf.
Da muss eine Schleife (und/oder sogar eine ganze Funktion) her, meine ich.
@datatek: das ganze packst du jetzt in ne schleife, fertig.
wobei das script von FireFlyer auch funktionieren würde.
While WinExists("DeinFenster") = 0
Sleep(500)
WEnd
;hier kommt dein restlicher code
[/autoit]@ Fisch, ich meine ihr redet an dem Sinn von dem Script von datatek vorbei.
Das Script läuft und soll ja nicht schlafen, bis das Fenster erscheint. Sondern es soll reagieren, FALLS es auftaucht.
Richtig, datatek?
dann wäre AdlibEnable() eine Lösung
wenn ich es richtig verstanden habe.
@datatek: das ganze packst du jetzt in ne schleife, fertig.
Ach ja?
@ Fisch, ich meine ihr redet an dem Sinn von dem Script von datatek vorbei.
Das Script läuft und soll ja nicht schlafen, bis das Fenster erscheint. Sondern es soll reagieren, FALLS es auftaucht.Richtig, datatek?
Das ist 100% richtig, danke.
Wenn es nicht anders geht, könnte es auch so aussehen dass das Programm an einer bestimmten Stelle guckt ob das Fenster da ist.
Dann wäre schon wichtig zu wissen, was das Skript sonst so "treibt". Hat es arg zu tun ist AdlibEnable sicher die beste Lösung, ansonsten läßt sich die Abfrage sicher in das vorhandene Skript einbauen.
Womit wir bei dem leidigen Problem sind: zu wenig Info's
Nicht nur das Problem schildern, sondern auch das Umfeld - und wenn wir wissen um was es geht, können wir gezielter helfen. (Unsere Kristallkugeln sind schon ziemlich abgenutzt )
Der Skript ist sehr schlicht, und tut blos Tastatur simulieren.
Es legt in einer Win Server 2003 Umgebung neue active directory Benutzer an.
Dabei kann es vorkommen dass der Benutzer bereits existiert. In diesem Fall taucht ein Dialogfenster auf. Das Programm soll lediglich dieses Dialogfenster erkennen und nicht weiterlaufen.
Wenn es Benutzer anlegt, also mehrere, muss also schon eine vorhandene Schleife dasein? Oder nur ein Benutzer? Wenn man den Zeitpunkt besser definiert, wann das Fenster kommen könnte, könnte man sogar doch bei einer IF-Funktion bleiben.
Warum zeigst du den Code nicht? Links und andere private Infos unkenntlich gemacht. Und schon könnte man besser helfen.
ich würds so lösen:
[autoit]AdlibEnable("_check", 250)
[/autoit][autoit][/autoit][autoit];dein Code
[/autoit][autoit][/autoit][autoit]Func _check()
If WinExists("DeinTitel") Then
;bla
EndIf
EndFunc
Die relevante Stelle habe ich mit Comments jetzt hervorgehoben.
[autoit]
HotKeySet("^1", "neu")
HotKeySet("^2", "gruppen")
HotKeySet("^3", "schliessen")
While 1
Sleep(100)
WEnd
Func neu()
send("!t")
sleep(50)
send("n")
sleep(50)
send("b")
sleep(200)
$vorname = InputBox("Vorname des neuen Benutzers", "Geben Sie den Vornamen des neuen Benutzers ein.", "")
$nachname = InputBox("Nachname des neuen Benutzers", "Geben Sie den Nachnamen des neuen Benutzers ein.", "")
sleep(200)
[/autoit][autoit][/autoit][autoit];
;
If WinExists( "Active Directory" , "Der ausgewählte Anmeldename des Benutzers wird in dieser Organisation bereits") Then
MsgBox(0, "Existiert bereits", "nutza gibbet scho, gelle?")
Exit
EndIf
;
;
send($vorname)
send("{TAB}")
send("{TAB}")
send($nachname)
send("{TAB}")
send("{TAB}")
$voller_name = ($vorname & " " & $nachname)
$Name_conv = StringLower(StringReplace(StringReplace(StringReplace(StringReplace($voller_name,"ü","ue"),"ö","oe"),"ä","ae"),"ß","ss"))
$Name_split = StringSplit($Name_conv, " ")
$bname = StringLeft($Name_split[1], 1) & "." & $Name_split[2]
sleep(75)
send($bname)
sleep(75)
Send("{ENTER}")
sleep(75)
send($bname)
sleep(75)
send("{TAB}")
sleep(75)
send($bname)
sleep(75)
send("{TAB}")
send("{SPACE}")
send("{TAB}")
send("{TAB}")
send("{SPACE}")
send("!w")
send("!w")
sleep(150)
Send("{ENTER}")
EndFunc
Func gruppen()
send("!t")
sleep(50)
send("g")
sleep(50)
send("***********")
sleep(50)
send("{ENTER}")
sleep(50)
send("{ENTER}")
send("!t")
sleep(50)
send("g")
sleep(50)
send("************")
sleep(50)
send("{ENTER}")
sleep(50)
send("{ENTER}")
sleep(50)
send("!t")
sleep(50)
send("g")
sleep(50)
send("***********")
sleep(50)
send("{ENTER}")
sleep(50)
send("{ENTER}")
EndFunc
Func schliessen()
Exit
EndFunc
ich würds so lösen:
[autoit]AdlibEnable("_check", 250)
[/autoit] [autoit][/autoit] [autoit];dein Code
[/autoit] [autoit][/autoit] [autoit]Func _check()
[/autoit]
If WinExists("DeinTitel") Then
;bla
EndIf
EndFunc
Scheint zu klappen, ich danke.
ich würde dann folgendes mit einbauen und nicht an der Steklle die gui durchklickern -> http://www.msexchangefaq.de/tools/ldifde.htm