Hallo Leute,
ich versuche verzweifelt Outlook für ca. 60 Arbeitsplätze zu personalisieren.
Autoit Version:
3.2.12.1
Folgende Vorab-Informationen:
Alle Infos über den einzelnen User, dessen Outlook konfiguriert werden soll, liegen im LDAP. Diese werden über ein Logonskript (vbs und cmd) ausgelesen und entsprechend der ermittelten Informationen für Outlook aufbereitet (prf- Datei).
Meldet sich ein Benutzer das aller erste mal an seinem PC an, so wird dabei das zuvor konfigurierte Outlook gestartet.
Nun kommt es zu dem Punkt, wo die üblichen Outlook Fenster (Outlook ist im Begriff Daten in Ihr Postfach zu improtieren.....usw.) erscheinen. Diese Fenster werden entsprechend der benötigten Auswahl mit "Ja", "Nein" oder "OK" von meinem bisherigen AutoIT-Skript beantworte. Im Anschluss erscheinen die Passwortfenster, für die automatisch konfigurierten Postfächer, auf die der Benutzer Zugriff haben soll.
Hier sollen die Passworte entsprechend der Postfächer automatisch eingesetzt werden. Diese Passworte sind für jedes Postfach verschieden und werden in dem AutoIT Skript als Variable von mir vorgegeben. Das Passwort für das "Persönliche Postfach" wurde zuvor über .hta Skript abgefragt, einer Variablen übergeben und steht so meinem AutoIt Skript zur Verfügung.
Die Passwort-Fenster haben alle den Titlel:
"Internet-E-Mail - Persönliches Postfach", "Internet-E-Mail - Postfach X , "Internet-E-Mail - Postfach Y" usw. Je nach Gruppenzugehörigkeit kann der Benutzer neben seinem pers. Postfach (das hat jeder Benutzer) bis zu 6 weitere, verschiedene Postfacher vom Typ "Internet-E-Mail - Postfach X...Y" haben, die mit den zugehörigen Passwörtern versehen werden müssen.
Aktueller Stand:
Die Outlook Fenster, die nach dem Start erscheinen werden erfolgreich von meinem bisherigen Skript durchgeklickt. Leider hat sich herausgestellt, dass diese Fenster sowie die später erscheinenden Passwort-Fenster in verschiedenen Zeitabständen nach dem Start von Outlook erscheinen (je nach Hardware). Aus diesem Grund wollte ich meine bisherige Verwendung von "sleep(5000) durch eine WinWait("Fenstertitel-X", "") ersetzen. Das hat bei den ersten Fernstern auch soweit geklappt. Nun bleibt aber leider das Skript bei den Passwortfenstern stehen. Verwende ich weiterhin "sleep", dann läuft alles durch. Leider dauert das Erscheinen der Passwortfenster manchmal länger, als mein AutoIt Skript läuft. Die übrig gebliebenen Passwortfenster bleiben dann unbearbeitet. Der Benutzer kennt die Passworte (außer seinem eigenen) NICHT und kann so selber keine Hand anlegen.
Vielleicht hat von Euch jemand eine Idee.
Hier der Code, der durch meine ganzen Tests jetzt nicht mehr so schön aussieht:
Spoiler anzeigen
;WinWait("Microsoft Office Outlook", "")
sleep(5000)
if WinExists("Microsoft Office Outlook", "Outlook konnte nicht im abgesicherten Modus gestartet werden.") Then
ControlClick("Microsoft Office Outlook", "Outlook konnte nicht im abgesicherten Modus gestartet werden.", "[CLASS:Button;INSTANCE:2]")
endif
if WinExists("Microsoft Office Outlook", "Outlook konnte zuletzt nicht korrekt gestartet werden.") Then
ControlClick("Microsoft Office Outlook", "Outlook konnte zuletzt nicht korrekt gestartet werden.", "[CLASS:Button;INSTANCE:1]")
endif
sleep(5000)
;WinWait("Microsoft Office Outlook", "Outlook ist im Begriff")
;WinWait("Microsoft", "Outlook ist im Begriff")
;sleep(1000)
if WinExists("Microsoft Office Outlook", "Outlook ist im Begriff") Then
ControlClick("Microsoft Office Outlook", "Outlook ist im Begriff", "[CLASS:Button;INSTANCE:1]")
;ControlClick("Microsoft Office Outlook", "Outlook ist im Begriff", "Button1")
endif
sleep(5000)
;WinWait("KONSEC Konnektor", "Der KONSEC Konnektor ist nun vollständig eingerichtet.")
;sleep(1000)
if WinExists("KONSEC Konnektor", "Der KONSEC Konnektor ist nun vollständig eingerichtet.") Then
;MsgBox(0, "Bla", "Das Konsec Fenster wurde gefunden")
WinActivate("KONSEC Konnektor", "Der KONSEC Konnektor ist nun vollständig eingerichtet.")
ControlClick("KONSEC Konnektor", "Der KONSEC Konnektor ist nun vollständig eingerichtet.", "[CLASS:Button;INSTANCE:1]")
endif
sleep(5000)
;WinWait("Microsoft Office Outlook", "Microsoft Office Outlook kann das Add-In nicht ausführen")
;sleep(1000)
if WinExists("Microsoft Office Outlook", "Microsoft Office Outlook kann das Add-In nicht ausführen") Then
ControlClick("Microsoft Office Outlook", "Microsoft Office Outlook kann das Add-In nicht ausführen", "[CLASS:Button;INSTANCE:2]")
endif
$passwd = EnvGet("PASSWORD")
;MsgBox(0, "Example", "Das Benutzerpasswort lautet: " & $passwd)
$counter = 2 * EnvGet("COUNTER")
;muss gegebenefalls wieder aktiviert werden 28.08.2008
;$zaehler = 2 * $counter
;MsgBox(0, "Anzahl Postfächer", "Anzahl der zu konfigurierenden Postfächer: " & $counter)
;MsgBox(0, "Zähler", "Zähler ist: " & $zaehler)
$pwsuffix = "PASSWORT"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Opt("WinTitleMatchMode", 2)
[/autoit] [autoit][/autoit] [autoit];sleep(5000)29.08.2008
Sleep(10000)
;WinWaitActive("Internet-E-Mail - ", "Geben Sie Ihren Benutzernamen und Ihr Kennwort", )
;MsgBox(0, "Zähler", "Es geht weiter: " & $zaehler)
;While WinWaitActive("Internet-E-Mail -", "")
;For $i = 1 To $zaehler Step 1 (29.08.2008)
For $i = 1 To $counter Step 1
sleep (2000)
If WinActive("Internet-E-Mail - Persönliches Postfach", "") Then
ControlSetText("Internet-E-Mail - Persönliches Postfach", "", "[CLASS:Edit;INSTANCE:1]", $passwd )
ControlClick("Internet-E-Mail - Persönliches Postfach", "", "[CLASS:Button;INSTANCE:1]")
ControlClick("Internet-E-Mail - Persönliches Postfach", "", "[CLASS:Button;INSTANCE:2]")
Endif
If WinActive("Internet-E-Mail -", "") Then
$title = WinGetTitle("Internet-E-Mail -", "")
;MsgBox(0, "Name des obersten, aktiven Fensters:", $title)4
$ref = ControlGetText("Internet-E-Mail - ", "", "[CLASS:RichEdit20WPT;INSTANCE:1]")
;MsgBox(0, "Name des Referates:", $ref)
;MsgBox(0, "gesamte Passwortausgabe:", $ref & $pwsuffix )
ControlSetText("Internet-E-Mail - ", "", "[CLASS:Edit;INSTANCE:1]", $ref & $pwsuffix )
ControlClick("Internet-E-Mail - ", "", "[CLASS:Button;INSTANCE:1]")
ControlClick("Internet-E-Mail - ", "", "[CLASS:Button;INSTANCE:2]")
$ref = " "
Endif
;WEnd
Next
MsgBox(0,"", "es sollte jetzt kein Fenster mehr offen sein!")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Exit
[/autoit]Bin für jede Art von Tip dankbar.
Edit BugFix: Hab mal Tags für AutoIt und Spoiler gesetzt