Run() funktioniert mal / mal nicht...

  • Hallo Leute,

    hab schon etwas Erfahrung mit Autoit und hatte bisher eigentlich keine großen Schwierigkeiten mit AutoIt.
    Gestern wollte ich mal die geschichte mit den "Child-Prozessen" (wie hier beschrieben) ausprobieren.
    Als ich dann solch einen Child-Prozess (kompilierte EXE) vom Hauptscript aus starten wollte ging das 'irgendwie nicht"...

    Versuch 1

    [autoit]

    Run("C:\Dokumente und Einstellungen\Admin\Eigene Dateien\au3_prog\mother-child-test\child01.exe")

    [/autoit]


    das funktioniert nicht


    Versuch 2 (2 übergeordnete ordner weiter..)

    [autoit]

    Run("C:\Dokumente und Einstellungen\Admin\Eigene Dateien\child01.exe")

    [/autoit]


    das funktioniert auch nicht


    Versuch 3

    [autoit]

    Run("C:\child01.exe")

    [/autoit]


    wenn ich die EXE in das root kopiere, funktioniert der Run-Befehl


    Versuch 4
    um auch sicher zu gehn, dass der Pfad richtig geschrieben ist...

    [autoit]

    $exe2run = FileOpenDialog("Choose EXE...","","(*.exe)")
    $id = Run($exe2run)
    MsgBox(0,"Prozess-ID",$id)

    [/autoit]


    Wenn der Run-Befehl funktioniert gibt die MsgBox logischerweise eine Zahl (Prozess-ID) zurück, welche über Null ist. Daran kann man dann entsprechend sehen ob der Run-Befehl funktioniert hat.

    So wenn ich mit diesem Script (Versuch 4) mal ein paar EXEn ansteuere, funktioniert das manchmal aber auch nur manchmal...

    Benutze ich den Run-Befehl falsch?

    Es scheint ja "irgendwie" mit dem pfad zusammenzuhängen, in dem die exe liegt.

    noch zur Info:

    • Ja, ich bin als "Admin" angemeldet und habe demnach auch alle rechte in den beschriebenen Ordnern.
    • Ja, ich habe bei den Versuchen die child01.exe an die entsprechenden Orte kopiert.
    • Ja, andere EXEn funktionieren in den entsprechenden Ordnern/Pfaden auch nicht...


    Vielen Dank schonmal für eure Hilfe!

    Einmal editiert, zuletzt von raffi01 (29. Mai 2009 um 18:59)

  • hi,

    an so etwas hatte ich auch gedacht, aber ShellExecute kann mir mir kein Handle zum STDOUT-Stream des gesarteten Prozesses ausgeben. Also bin ich auf den direkten Run-Befehl leider angewiesen.

    danke

  • Weiß nich, hab derartige Run-Probleme eigendlich nich ;P Vllt liegts an den Freizeichen.. Füge mal für jedes Freizeichen Chr(32) ein.. isn Versuch wert!

  • [autoit]

    $id = Run("C:\Dokumente"&Chr(32)&"und"&Chr(32)&"Einstellungen\Admin\Eigene"&Chr(32)&"Dateien\au3_prog\mother-child-test\child01.exe")
    MsgBox(0,"Prozess-ID",$id)

    [/autoit]


    funktioniert auch nicht

    • Offizieller Beitrag

    Hallo,

    probiers mal so:

    [autoit]

    Run("""C:\Dokumente und Einstellungen\Admin\Eigene Dateien\au3_prog\mother-child-test\child01.exe""")

    [/autoit]


    oder so:

    [autoit]

    Run(@ComSpec & " /C ""C:\Dokumente und Einstellungen\Admin\Eigene Dateien\au3_prog\mother-child-test\child01.exe""")

    [/autoit]

    RR04, hast Du dir überhaupt den 1. Beitrag komplett durchgelesen?!

  • Hi,

    zu 1:
    ja, die EXE über doppelklick oder Start>Ausführen... geht

    zu 2-3:

    [autoit]

    Run(".\child01.exe")

    [/autoit]


    und

    [autoit]

    Run("child01.exe")

    [/autoit]


    gehen beider 'interessannterweise'

    jedoch folgendes wiederum nicht

    [autoit]

    Run(@ScriptDir & "\child01.exe")

    [/autoit]

    aber temporär werd ich jetzt mal deine methode anwenden, wenn die wenigstens kosequent funktioniert...
    übrigens: AutoIt neu installieren: hat auch nichts gebracht

    danke

  • [autoit]

    Run("""C:\Dokumente und Einstellungen\Admin\Eigene Dateien\au3_prog\mother-child-test\child01.exe""")

    [/autoit]


    oder so...

    @ bernd670
    die Methode funktioniert! vielen dank!
    kann man auch verstehen warum das nur mit 3 (""") funktioniert? würde mich interessieren...

    ansonsten schönen tag noch ;)

  • Der Befehl heißt ja Run([Programm]).

    Wenn Du nun ein Programm namens XYZ starten willst, schreibst Du Run("XYZ").

    Da aber dein Pfad Leerzeichen enthält (wovon man als Programmierer lieber ausgehen sollte), muss Du den Pfad bzw. Pfad + Programm in Anführungszeichen schreiben. Dies kann auf folgende Weise geschehen:

    1. """C:\Dokumente und Einstellungen\Admin\Eigene Dateien\..."""
    2. '"C:\Dokumente und Einstellungen\Admin\Eigene Dateien\..."'
    3. Chr(34) & "C:\Dokumente und Einstellungen\Admin\Eigene Dateien\.." & Chr(34)

    Der Run Befehl lautet dann z.B.: Run('"C:\Dokumente und Einstellungen\Admin\Eigene Dateien\..."')

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (29. Mai 2009 um 20:53)