Hallo,
ich habe mir folgendes Skript erstellt (siehe Anhang).
Er startet mir beim ausführen der kompilierten exe viele AutoIt Instanzen (siehe Anlage).
Was mache ich falsch?
Danke und Gruß
Dennis
Hallo,
ich habe mir folgendes Skript erstellt (siehe Anhang).
Er startet mir beim ausführen der kompilierten exe viele AutoIt Instanzen (siehe Anlage).
Was mache ich falsch?
Danke und Gruß
Dennis
Spontan würde mir dazu einfallen:
Du hast ein Skript das nennen wir mal Test.au3 und eine exe-Datei die sich Test.exe nennt.
Die Test.exe rufst du per Run oder Shellexecute in deinem Skript auf.
Kompilierst du nun dein Skript überschreibst du die Test.exe und rufst damit immer wieder dein Skript auf.
Da in deinem Skript allerdings kein Aufruf existiert muss es was anderes sein.
Da fällt mir das Send("{ENTER}") auf.
Wo ist denn der Fokus wenn das passiert? - immer noch im Explorer auf deiner exe?
Daher bau mal ein WinActivate() auf dein Fenster vor dein Send ein.
Ansonsten sollte man sowieso wenn es geht auf Send verzichten wenn es auch per Alternativen wie Controlclick, ControlSend usw. geht.
Gibt genügend Anleitungen dazu wie man Setups mit AutoIt automatisieren kann.
Edit: Ach ja - Willkommen im Forum
Das hatte ich auch ein mal es war kein Run oder ShellExecute im Script drinne aber es startete sich trotzem oft genug um damit meinen damaligen PC zum absturz zu bringen.
Bingo.
Das wars.
Habe das Script jetzt so geändert:
WinActivate ("smartFIX 4.1 Client - Willkommen")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Client-Komponenten")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Clienttyp")
Send("!v")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - smartFIX Server Name")
Send("W8KBDF14")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Bereit")
Send("!i")
WinWaitActive("smartFIX 4.1 Client Installer")
Send("!f")
WinWaitActive("smartFIX 4.1 Client Installerinformationen")
Send("!j")
Jetzt bleibt das Skript hier stehen
WinWaitActive("smartFIX 4.1 Client Installer")
Send("!f")
Drücke ich ALT + f gehts weiter.
Wo liegt da noch mein Fehler?
Lösung gefunden.
Ich musste eine Schleife einbauen, weil der zu früh ALT + F drückt.
So gehts:
WinActivate ("smartFIX 4.1 Client - Willkommen")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Client-Komponenten")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Clienttyp")
Send("!v")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - smartFIX Server Name")
Send("W8KBDF14")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Bereit")
Send("!i")
$h = 0
While $h <= 500
Send("!f")
$h = $h + 1
WEnd
WinWaitActive("smartFIX 4.1 Client Installer")
Send("!f")
WinWaitActive("smartFIX 4.1 Client Installerinformationen")
Send("!j")
Gruß
Dennis
While $h <= 500
Send("!f")
$h = $h + 1
WEnd
du sendest 500 mal alt f? wieso?
ne pause kriegste mit sleep() hin
noch besser wären die Controlfunktionen wie Controlclick() Controlsettext() usw
OK.
Wie kann ich in meinem Fall die Controllfunktion nutzen.
Kannst Du mir ein Beispiel geben?
Kenne mich nicht so gut aus.
hier mal n beispielscript für den aktuellen vlc player:
ShellExecute(@Scriptdir & "\vlc-1.0.5-win32.exe")
WinWait("Installer Language", "Please select a language.")
Controlclick("Installer Language", "Please select a language.", "[CLASS:Button; INSTANCE:1]")
Winwait("VLC media player 1.0.5 Installation", "Willkommen beim Installations")
ControlClick("VLC media player 1.0.5 Installation", "Willkommen beim Installations", "[CLASS:Button; INSTANCE:2]")
Winwait("VLC media player 1.0.5 Installation", "Lizenzabkommen")
ControlClick("VLC media player 1.0.5 Installation", "Lizenzabkommen", "[CLASS:Button; INSTANCE:2]")
Winwait("VLC media player 1.0.5 Installation", "Komponenten auswählen")
ControlClick("VLC media player 1.0.5 Installation", "Komponenten auswählen", "[CLASS:Button; INSTANCE:2]")
Winwait("VLC media player 1.0.5 Installation", "Zielverzeichnis auswählen")
ControlClick("VLC media player 1.0.5 Installation", "Zielverzeichnis auswählen", "[CLASS:Button; INSTANCE:2]")
Winwait("VLC media player 1.0.5 Installation", "Die Installation von VLC media player 1.0.5 wird abgeschlossen")
ControlClick("VLC media player 1.0.5 Installation", "Die Installation von VLC media player 1.0.5 wird abgeschlossen", "[CLASS:Button; INSTANCE:2]")
die werte die du im script eintragen musst bekommst du über das window info tool.
Bei Text reicht immer ein teil des fenstertextes, aber er muss eindeutig sein.
bei Contolid isses am bessen immer die Class zu verwenden.
Es könnte aber auch sein, das autoit3.exe mal gecrasht ist.
Das passiert bei mir auch manchmal, aber dann wird das Tray Icon nicht gelöscht.
Wenn man dann mit der Maus drüber fährt, gehts weg.
MfG. PrideRage
P.S.: Yay Post Nr. 300
das problem mit den instanzen is doch schon lang gelöst
gratuliere zur 300
Thx.
Ja weiss ich eig. selber, war aber schon bei 299
und deswegn dachtest du dir: "so jetz mach ich mal nen sinnlosen post!"
oder wie
und deswegn dachtest du dir: "so jetz mach ich mal nen sinnlosen post!"
oder wie
Genau
oh mann
naja bitte zurück zum thema:
wie siehts denn aus SirHaschke?
wenn du hilfe brauchst meld dich ruhig
Bisher immer noch so.
$h = 0
While $h <= 500
Send("!f")
$h = $h + 1
WEnd
Mit Controlklick hab ich es nicht hin bekommen.
wo liegt denn das problem?
zeig mal dein script mit den controlclicks und sag an was es scheitert.
anders können wir dir nich helfen
Bitte:
WinActivate ("smartFIX 4.1 Client - Willkommen")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Client-Komponenten")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Clienttyp")
Send("!v")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - smartFIX Server Name")
Send("W8KBDF14")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Bereit")
Send("!i")
WinWaitActive("smartFIX 4.1 Client Installer")
ControlClick("smartFIX 4.1 Client Installer", "InstallShield Wizard abgeschlossen", "[CLASS:Button; INSTANCE:1]")
WinWaitActive("smartFIX 4.1 Client Installerinformationen")
Send("!j")
Bleibt beim ControlClick stehen..........
wahrscheinlich bleibt er wo anders stehen
teste mal das und schau welche msgbox die letzte is die du angezeigt bekommst
WinActivate ("smartFIX 4.1 Client - Willkommen")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Client-Komponenten")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Clienttyp")
Send("!v")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - smartFIX Server Name")
Send("W8KBDF14")
Send("!w")
WinWaitActive("smartFIX 4.1 Client - Bereit")
Send("!i")
msgbox(0,"","1")
WinWaitActive("smartFIX 4.1 Client Installer")
msgbox(0,"","2")
ControlClick("smartFIX 4.1 Client Installer", "InstallShield Wizard abgeschlossen", "[CLASS:Button; INSTANCE:1]")
msgbox(0,"","3")
WinWaitActive("smartFIX 4.1 Client Installerinformationen")
Send("!j")
OK.
Dann kommt das:
und wenn du die msgbox wegklickst dann gehts nicht weiter oder?
weil dann hängt er nicht beim controlclick sondern wartet ewig auf das fenster.
er hängt dann quasi hier:
WinWaitActive("smartFIX 4.1 Client Installer")