ich hab dieses hier
[autoit]ShellExecuteWait("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
WinClose("[CLASS:MozillaWindowClass]")
er soll Firefox starten und anschließend nach dem es gestartet ist schließen... aber er schließt nciht?!
ich hab dieses hier
[autoit]ShellExecuteWait("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
WinClose("[CLASS:MozillaWindowClass]")
er soll Firefox starten und anschließend nach dem es gestartet ist schließen... aber er schließt nciht?!
ShellExecute("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
if ProcessExists("firefox.exe") Then
ProcessClose("firefox.exe")
EndIf
kann es aer bicht verstehen sozu man sowas mache will
und zwar ist es bestandteil eines startscriptes nach einem neuem Image in einer Firma alle Programme werden einmal mit Adminrechten gestartet damit sie fehlerfrei laufen usw. deswegen starten und gleich schließen danach das nächste usw.
achso,na dann packe doch alle programme in ein array rein das geht schneller und verbraucht
weniger speicher
du hattest das mit nach einer bestimmten Zeit schließen geschrieben
kannst du mir bitte nen Beispiel dafür zeigen
ShellExecute("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
if ProcessExists("firefox.exe") Then
sleep(5000) ;<---------warten 5 sec bis zum schließen
ProcessClose("firefox.exe")
EndIf
ahh verdammt sleep funktion... wenn nix geht die geht immer... danke
Hi,
statt dem Sleep würde ich das so machen:
ShellExecute("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
WinWaitActive("Firefox") ; musst sehen wie der Titel ist. Nimm das Tool "AutoIt Windows Info"
WinClose("Firefox")
oder falls du nach dem Prozess gehen willst:
ShellExecute("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
While ProcessExists("firefox.exe") = 0
Sleep(30)
WEnd
ProcessClose("firefox.exe")
Gruß
Prajoss
Edit: Vorschaufunktion ist ganz praktisch, muss man nicht die Fehler nach dem Post ausbessern
man könnte den ganze spass auch noch nach uhrzeiten machen
dann hat man nicht die ganze sleeps drinne und es ist genauer
zb. porgramm1 start 12:00 ende 12:00:30 und dann programm2 12:01:30 ende um 12:02 und so weiter
ich bastel erstmal ein array und lasse das dann nach und nach ausgeben dann hab ich doch quasi nur eine routine
wo das array nach und nach sich die programme einlädt und dann ausführt schließt usw.
Guten Morgen,
Meine Idee sieht jetzt so aus
[autoit]Dim $programs[2]
$programs[0] = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
$programs[1] = "C:\Program Files (x86)\FreeCommander\FreeCommander.exe"
$ausgabe =""
For $i = UBound($programs) to 0 Step -1
ShellExecute($programs[$i])
sleep(10000)
ProcessClose(
Next
natürlich noch nicht fertig. Meine Frage:
Kann man den Process automatisch erkennen lassen zu dem Programm das oben gestartet wurde. Soll quasi eine Schleife werden
deswegen muss ich das ja irgendwie in Variablen angeben.
if ProcessExists("Dein Process") then ;action also das was du machen willst
endif
damit bin ich ja an einen bestimmten process gebunden. und wenn cih das richtig sehe in einer schleife unpraktikabel
es gibt ja die FUnktion WinGetProcess allerdings brauch ich dafür wiederum den Fensternamen. Das ist ein Teufelskreis xDD
na dem bekommst du doch ganz leicht mit dem WindowInfo von Autoit
tielen von Firefox ist
[autoit]Mozilla Firefox
[/autoit]ok jetzt habe ich es verstanden
und wie ist es wenn du mit wingethandle was machst ?
Moin,
also wenn dann so:
[autoit]
For $i = UBound($programs) - 1 to 0 Step -1
Ubound($array) gibt als Rückgabewert die Anzahl der insgesamten Elemente.
Beispiel:
[autoit]Dim $array[5]
[/autoit]erzeugt ein Array mit 5 Elementen. Diese sind:
[autoit]$array[0], $array[1], $array[2], $array[3], $array[4]
[/autoit](5 an der Zahl).
Wenn du jetzt nur Ubound($array) nimmst, dann würde man als Index die 5 haben.
Dieses Element existiert aber nicht und das Programm würde abstürzen.
Deswegen ist die richtige Anwendung
Ubound($array) - 1
[/autoit]Gruß
Prajoss
danke prajoss
zu dem rest, ich sehe das problem eher darin das immer wenn ich ne Win funktion aufrufe jedes mal ein fester Parameter eingetragen werden muss. Das heißt ich kann nicht dynamisch arbeiten aber kann natürlich acuh sein das ich was übersehen habe?
Evtl ist es doch besser die Programme extra zu öffnen und schließen und dann copy&paste
Moin Tobitron,
jetzt versteh ich dein Problem nicht genau.
Du kannst doch bei Shellexute auch die Programmparameter übergeben.
ShellExecute ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )
Wenn du unterschiedliche Parameter zu den Programmen hast, dann lager die doch schon vorher in ein Array aus und mach das etwa so:
Dim $array[5][2]
[/autoit][autoit][/autoit][autoit]$array[0][0] = "Programmpfad1"
$array[0][1] = "Parameter für Programm 1"
$array[1][0] = "Programmpfad2"
$array[1][1] = "Parameter für Programm 2"
$array[2][0] = "Programmpfad3"
$array[2][1] = "Parameter für Programm 3"
$array[3][0] = "Programmpfad4"
$array[3][1] = "Parameter für Programm 4"
$array[4][0] = "Programmpfad5"
$array[4][1] = "Parameter für Programm 5"
$array[5][0] = "Programmpfad6"
$array[5][1] = "Parameter für Programm 6"
For $i = 0 To UBound($array) - 1
ShellExecute($array[$i][0], $array[$i][1])
;Sonstiges
Next
Genauso könntest du auch noch ein Drittes Feld hinzufügen, in dem der Prozessname steht, also:
[autoit]Dim $array[5][3]
[/autoit][autoit][/autoit][autoit]$array[0][0] = "Programmpfad1"
$array[0][1] = "Parameter für Programm 1"
$array[0][2] = "Prozessname1"
Wichtig bei Arrays ist immer, dass der Index bei 0 anfängt (das verwirrt manchmal^^)
Gruß
Prajoss
Mach doch einfach ein 2D Array und speicher unter "0" deinen Pfad zur Exe und unter "1" den Namen also FF.exe zb, dass ist meiner Meinung nach der einfachste Weg das ganze in eine Schleife einzubauen.
EDIT: // Dar war wohl jemand schneller
wo finde ich parameter?
danke prajoss
zu dem rest, ich sehe das problem eher darin das immer wenn ich ne Win funktion aufrufe jedes mal ein fester Parameter eingetragen werden muss. Das heißt ich kann nicht dynamisch arbeiten aber kann natürlich acuh sein das ich was übersehen habe?
Evtl ist es doch besser die Programme extra zu öffnen und schließen und dann copy&paste
Ich dachte du wüsstest welche Parameter du an die Anwendung übergeben musst.
Ansonsten versteh ich dein Problem dann nicht ganz/richtig.
Gruß
Prajoss