2 Fenster mit gleichem Titel unterscheiden
-
Schwester -
17. April 2006 um 19:33 -
Geschlossen -
Erledigt
-
-
jo stimmt, aber die Beschreibung ist noch etwas ausführlicher
-
so, habe mich also doch jetzt mal etwas näher mit beschäftigt
jaja, das war doch etwas schwerer als erst gedachtder selbe mist, ist auch bei den ganzen "Acronis" Protukten
so, das sollte rechner unabhängig gehen, egal ob die kiste schnell bzw. langsam ist (hoffe ich doch )
Code
Alles anzeigen;################################ ; ; ; Autor: Dr.Galvany ; ; Programm: RealPlayer 10-5 Gold ; ; ;################################ $title = "RealPlayer Installationsassistent" Run("RealPlayer10-5GOLD_de.exe") WinWait($title) WinActivate($title) Send("!A") ;Sleep(500) WinWait($title) WinActivate($title) Send("{TAB 2}{UP}") Send("!W") ;Sleep(500) WinWait($title) WinActivate($title) Send("{TAB 3}{SPACE}{DOWN}{SPACE}{DOWN}{SPACE}") Send("!W") While 1 $sitz = DirGetSize(@ProgramFilesDir & "\Real") $sitzmb = ($sitz / 1024 / 1024) If $sitzmb > "39,42" Then Sleep(2000) ExitLoop Else Sleep(1000) EndIf WEnd Sleep(1000) WinWait($title) WinActivate($title) Send("!F") WinWaitActive("RealPlayer") ProcessClose("realplay.exe") ProcessClose("realsched.exe")
-
hm...hab deins mal durchlaufen lassen..nur bleibt er dann bei der Registrierung ja hängen..war das Absicht?
Naja ok, aber den Rest werd ich schaffen!Aber für den letzten Teil bräuchte ich nochmal eine kurze Erläuterung:
Code
Alles anzeigenWhile 1 $sitz = DirGetSize(@ProgramFilesDir & "\Real") $sitzmb = ($sitz / 1024 / 1024) If $sitzmb > "39,42" Then Sleep(2000) ExitLoop Else Sleep(1000) EndIf WEnd Sleep(1000) WinWait($title) WinActivate($title)
Das heißt er soll den Real-Ordner auf die Größe überprüfen und wenn dieser größer 39,42 ist soll er 2 Sekunden warten und dann weitermachen mit 1 Sekunde warten und dann !F ... - quasi.. - oder?
Wofür braucht man jedoch dann den WinWait/WinActivate-Befehl? Da die Fenster doch eh immer aktiv sind und gleich heißen sind sie doch im Prinzip nicht nötig, oder?
*edit*
achja und ich hatte das mit dem Sleep Befehl gemacht! ..da hatte es halt geklappt..aber so das wär schon ne bessere Möglichkeit! :o)
*/edit* -
- Offizieller Beitrag
Hallo!
Wozu braucht man WinWait/WinWaitActive?
Nun, man kann eben nie sicher sein, ob sich nicht ein anderes Fenster in den Vordergrund gemogelt hat (z.B. Virenscanner, Firewall, Windows, Fehlermeldungen, ...).
Deshalb schaut man erst noch mal nach, ob das Fenster da ist (WinWait; in deinem Fall nicht nötig/möglich, da alle Fenster gleich heißen), dann holt man es in den Vordergrund (WinActivate) und wartet bis es im Vordergrund "angekommen" ist (WinWaitActive). Dann - und eigentlich nur dann - kann man SICHER sein, dass man mit dem Fenster im Vordergrund agiert - egal wie viele Firewalls an sind ;-).Den Rest des Skriptes hast du ganz richtig verstanden.
peethebee
-
Juhu Juhu - Also ich habs jetzt eeendlich nach langem hin und her hinbekommen! - Wunderbaaar! =)
Aber ich werd jetzt direkt mit dem nächsten Prog weitermachen und sicher bei der ein oder anderen Frage wieder hier auftauchen!
Dankeschön nochmal für alle Comments! :kette:
-
- Offizieller Beitrag
Bitte sehr, wir helfen gerne .
Wäre nett, wenn du noch das Endergebnis hier oder da posten würdest.Danke,
peethebee -
Code
Alles anzeigen; ---------------------------------------------------------------------------- ; AutoIt Version: 3.1.0 ; ; Schwester ; ; RealPlayer10-5GOLD_de.exe ; ---------------------------------------------------------------------------- Run("RealPlayer10-5GOLD_de.exe") winwaitactive("RealPlayer Installationsassistent") Send("!A") WinWaitActive("RealPlayer Installationsassistent") Send ("{TAB 2}{DOWN 7}") Send("!W") Send ("{TAB 3}{SPACE}{DOWN}{SPACE}{DOWN}{SPACE}") Send("!W") While 1 $sitz = DirGetSize(@ProgramFilesDir & "\Real") $sitzmb = ($sitz / 1024 / 1024) If $sitzmb > "40,5" Then Sleep(2000) ExitLoop Else Sleep(1000) EndIf WEnd WinWait("RealPlayer Installationsassistent") WinActivate("RealPlayer Installationsassistenst") Send("!F") WinWaitActive("RealPlayer","?U") Sleep(3000) Send("{Tab 16}{Enter}") WinWaitActive("Setup abbrechen -- Web Page Dialog") Send("{Enter}") ProcessClose("realplay.exe")
-
Jedoch hätte ich schon meinen 1. Bug gefunden...:
Wenn das Prog schon installiert ist.., dann haut das mit der MB-Abfrage nicht hin und da bleibt er dann wieder hängen..!
Aber wer installiert schon das gleiche Programm 2 mal!
-
hehe, aber von einer "Registrierung" kamm bei meiner version nichts
da ich ja auch den prozzes gekillt habe kommt da nichts mehr.
kann ja sein das ich eine etwas andere exe hatte.aber es freud mich, wenn es geht :))
ach jaaaaaaaa, da ich schon das ein oder andere programm für silent install erstellt habe , kann ich euch sagen, es gibt schon einige programme, wo das neue fenster NICHT AKTIV ist!!!
darum winactivate
was die 2 install angeht, ist es natürlich so, das man es normal nicht noch mal installiert.
-
Das mit der anderen Exe könnte durchaus sein... - du hattest auch ne andere MB-Zahl bei der Abfrage..
-
Da hab ich wahrscheinlich noch Glück gehabt, dass ich krank geworden bin..sonst wär ich nie dazu gekommen das zu lernen! -
so, jetzt ist der Bug auch beseitigt
Code
Alles anzeigen;################################ ; ; ; Autor: Dr.Galvany ; ; Programm: RealPlayer 10-5 Gold ; ; ;################################ Run("RealPlayer10-5GOLD_de.exe") WinWaitActive("RealPlayer Installationsassistent") Send("!A") WinWaitActive("RealPlayer Installationsassistent") Send("{TAB 2}{DOWN 7}") Send("!W") Send("{TAB 3}{SPACE}{DOWN}{SPACE}{DOWN}{SPACE}") Send("!W") $installet = DirGetSize(@ProgramFilesDir & "\Real") If $installet > "0" Then If ProcessExists("realplay.exe") Then ProcessClose("realplay.exe") EndIf DirRemove(@ProgramFilesDir & "\Real", 1) EndIf While 1 $sitz = DirGetSize(@ProgramFilesDir & "\Real") $sitzmb = ($sitz / 1024 / 1024) If $sitzmb > "40,5" Then Sleep(2000) ExitLoop Else Sleep(1000) EndIf WEnd WinWait("RealPlayer Installationsassistent") WinActivate("RealPlayer Installationsassistenst") Send("!F") WinWaitActive("RealPlayer", "?U") Sleep(3000) Send("{Tab 16}{Enter}") WinWaitActive("Setup abbrechen -- Web Page Dialog") Send("{Enter}") ProcessClose("realplay.exe")
-
aaaahaaa - okay
Aaaber was wäre wennn: z. B. eine andere Version installiert wäre..und ich die neue drüberinstallieren würde.., sicherlich wäre das auch eine real.exe ..dann würde er es auch abbrechen!?!
-
das geht trotzdem
man könnte auch noch eine versions abfrage mit rein machen, aber wirklich, das braucht keiner!
es soll ja eine erst silent install sein :party4:wenn das wörtchen wenn nicht wär, wär mein vater millionär
-
ja stimmt - da hast du Recht!
Okay - Dann belasse ich es dabei!
-