Hallo Leute,
ich habe nun verdammt viel gelesen und gegoogelt und probiert und komme nicht weiter.
Über jede Hilfe wäre ich sehr dankbar.
folgende Situation:
Aufgrund
eines Projektes bei dem ein Datenaustausch nur über ein UI möglich ist,
da keine Schnittstellen wie ODBC u.ä. vorhanden sind, hab ich den Tipp
mit AutoIt bekommen. Um das ganze mal zu testen, habe ich ein Beispiel
von AutoIt etwas umgeschrieben und zunächst über eine Batch-Datei über
PHP ausführen lassen (au3 wurde kompiliert). Im Errorlog war nur die
Meldung zu finden "unabled to execute (...)" ...
Dann bin ich den
Umweg über die Aufgabenplanung gegangen und habe einen Task mit Trigger
erstellt. Dabei musste ich feststellen, dass wenn ich die RDP-Sitzung
aktiv und offen habe, dass der Task wunderbar ausgeführt wird. Wenn ich
die RDP-Sitzung Minimiere, hängt es nach dem öffnen des Notepads (Script
füge ich weiter unten an), wenn ich dann die Sitzung wieder maximiere
und einen Klick in den Editor mache, hat AutoIt fast immer
weitergemacht. Wenn ich die RDP-Sitzung Schließe, bleibt der Task beim
Status "Wird ausgeführt", solange bis ich ihn beende. Wenn ich mich
Abmelde, das gleiche Spiel.
Also gut dachte ich mir, liegt
vielleicht an den Berechtigungen und an der Fehlenden Windows GUI, also
habe ich weiter recherchiert und bin auf "ui0detect" gestoßen.
Kurzerhand habe ich anhand der AutoIt EXE einen Dienst erstellt, welcher
als Benutzer SYSTEM läuft. wenn ich den Dienst starte kommt eine
Windowsfehlermeldung
"Der Dienst XYZ auf Lokaler Computer konnte
nicht gestartet werden. Fehler 1053: Der Dienst antwortete nicht
rechtzeitig auf die Start oder Steuerungsanforderung"
Außerdem geht das Fenster "Erkennung interaktiver Dienste" auf und frägt mich, ob ich die Meldung anzeigen will.
Nicht weiter schlimm dachte ich mir, schauste mal auf den Session 0 Desktop.
Kurzerhand
über Kommandozeile "rundll32 winsta.dll
WinStationSwitchToServicesSession" habe ich mir das angesehen und musste
feststellen, dass der Editor offen ist und nichts eingegeben wurde und
das Editor-Fenster nicht aktiv ist.
Gut dachte ich mir, bauste nochmal eine Bedingung ein, dass wenn der Editor nicht aktiv ist, dass er aktiviert werden soll.
Erledigt und wieder den Dienst gestartet, gleiche Meldungen kommen wieder, egal dachte ich mir, schauste wieder auf den Desktop.
Umgeschalten und da musste ich wieder feststellen, Editor offen, aber nicht aktiv.
Systemumgebung: Windows Server 2008 R2, AutoIt3, au3-Dateien zu x64 kompiliert (mit x86 selbes verhalten).
Script1 ( wird beim starten des Dienstes ausgeführt")
[autoit]sleep(2000)
Run("C:\Program Files (x86)\AutoIt3\Examples\command.bat")
Script2 (wird über die Batchdatei ausgeführt)
[autoit]sleep(2000)
Run("notepad.exe")
WinWait("Unbenannt - Editor")
WinActivate("Unbenannt - Editor", "")
If WinActive("Unbenannt - Editor", "") = 0 Then WinActivate("Unbenannt - Editor", "")
Send("!{TAB}", 1)
Send("Sending some special characters:{ENTER 2}")
Send("First way: ")
Send("{!}{^}{+}{#}")
Send("{ENTER}")
Send("Second way: ")
Send("!^+#", 1)
Send("{ENTER}{ENTER}Finished")
WinClose("[ACTIVE]", "")
Send("!S");
[/autoit][autoit][/autoit][autoit]WinWaitActive("Der Pfad ist nicht verfügbar", "OK")
;hierzu
muss ich erläutern, dass wenn das "speichern unter" Fenster aufgeht, er
standardmäßig auf den Desktop switcht, welcher in der Session 0 nicht
da ist,
;da "SYSTEM" keinen Desktop hat.
ControlClick("Der Pfad ist nicht verfügbar", "OK", "Button1")
WinWait("Speichern unter")
WinActivate("Speichern unter")
ControlSend("Speichern unter", "", "[CLASS:Edit; INSTANCE:1]", "C:\autoit\autoit.txt")
[/autoit][autoit][/autoit][autoit]Send("!S");
[/autoit]Wenn
ich die Scirpte (natürlich auf die andere Umgebung angepasst (in bezug
auf Desktopfehlermeldung)) per Doppelklick ausführe macht er alles so
wie er soll, nur wenn ich es automatisch haben will, bleibt er beim
Editor hängen....
Hat irgendwer eine Lösung für mich?
Ich verzweifle und habe schon fast eine Woche getüfftelt und letztendlich kam nichts dabei raus...
Viele Grüße
Jerry