nur eine kleine Frage zum run befehl

  • Hallo Ihr AUTOIT Pro`s ich als absoluter neueinsteiger bin gerade beim run Befehel auf ein Problem gestoßen.

    Ich möchte ein Programm über RUN starten und habe folgende Start optionen:

    "C:\Program Files (x86)\XXX\XXX 6.2\Client\XXXX.exe" -data "%APPDATA%\scworkspace" -vmargs -Xmx128M"

    wie sieht das im Run Befehl richtig aus

    run ("C:\Program Files (x86)\XXX\xxx 6.2\Client\xxxx.exe", -data ,"%APPDATA%\scworkspace", -vmargs -Xmx128M)

    ===> funktioniert so nicht


    Danke im vorraus

  • Schau dir den Befehl "ShellExecute" oder ShellExecuteWait" an ev Funktioniert es so :)

  • Schau dir mal die Parameter von Run an...
    Der Aufruf müsste so aussehen:

    [autoit]


    $sRun = "'C:\Program Files (x86)\XXX\XXX 6.2\Client\XXXX.exe' -data '%APPDATA%\scworkspace' -vmargs -Xmx128M"
    Run($sRun)

    [/autoit]

    lg

  • Schau dir mal die Parameter von Run an...
    Der Aufruf müsste so aussehen:

    [autoit]


    $sRun = "'C:\Program Files (x86)\XXX\XXX 6.2\Client\XXXX.exe' -data '%APPDATA%\scworkspace' -vmargs -Xmx128M"
    Run($sRun)

    [/autoit]

    lg

    ich mache alles mit Shellexecute da ich so auch leicht Internetseiten öffnen kann ^^ hab den Run befehl ev 2x verwendet bis ich damals etwas nicht öffnen konnte seit dort nur shellexecute :P

  • Run ist letztendlich nichts anderes als ShellExecute.
    Der Unterschied ist halt, dass bei ShellExecute der Explorer (Shell) bestimmt, wie die Datei behandelt/ausgeführt (Execute) wird.
    Wenn du also z.B. mit ShellExecute eine Internetadresse öffnest, wird diese vom Explorer mit dem Standardbrowser geöffnet.

    Run hingegen kann wirklich nur ausführbare Dateien ausführen.

    lg

    Edit:
    Beitrag Nummer 900. :party:

    Einmal editiert, zuletzt von chesstiger (21. März 2013 um 00:15)

  • Beide können einfach etwas verschiedenes.
    Bei Run kannst du selber festlegen, mit welchem Programm eine Datei geöffnet wird.
    Run("notepad.exe test.bmp") würde die Bilddatei test.bmp mit dem Editor öffnen.
    ShellExecute("test.bmp") würde jedoch die Bilddatei mit dem Standard-Bildanzeigeprogramm öffnen.

    Kommt immer auf den Verwendungszweck an.^^

    Allerdings verwendet man bei Executables (=Ausführbare Dateien) normalerweise Run.

    lg

  • leider hab ich immer noch den Fehler missing seperator

    bei shellExecute ist das selbe Prob d.h. die Schalter müssen irgendwie anders eingebunden werden

    Einmal editiert, zuletzt von bh2005 (21. März 2013 um 03:09)

  • kann es leider selbst nicht ausprobieren wie es gehen würde da kein programmname dabei steht ^^ und ich sonst keines besitze wo ich die parameter ändern "müsste".

    also kann dir leider nicht weiter helfen

  • der Fehler kommt von AUTOIT


    hab nen Shot angehangen,

    wenn ich die Eigenschaften meiner Programmverknüpfung auf rufe sieht das so aus

    "C:\Program Files (x86)\Peregrine Systems\ServiceCenter 6.2\Client\ServiceCenter.exe" -data "%APPDATA%\scworkspace" -vmargs -Xmx128M


    greetz

  • Du hast diverse Anführungszeichen vergessen.. Alle Parameter die Text beinhalten müssen mit Anführungszeichen als Strings übergeben werden. Sonst denkt AutoIt das währen Funktionen o.Ä.. Abgesehen davon müssen ALLE Parameter per String als 2ter Parameter von ShellExecute angegeben werden, wie kommst du drauf sie durch Kommas zu trennen?

  • naja Neuling eben und der erste Gedanke war ja auch der einfache aufruf über den RUN Befehl

    wie würde den der Syntax exact beim RUN Befehl lauten ????

  • THX ... so funktioniert es schon fast der Rest liegt aber nicht an AUTOIT

    Einmal editiert, zuletzt von bh2005 (21. März 2013 um 23:09)

  • eins noch kann mir jemand erklären was es für Vor- / Nachteile

    RUN vs. ShellExecute giebt

  • Zitat von chesstiger

    Bei Run kannst du selber festlegen, mit welchem Programm eine Datei geöffnet wird.
    Run("notepad.exe test.bmp") würde die Bilddatei test.bmp mit dem Editor öffnen.
    ShellExecute("test.bmp") würde jedoch die Bilddatei mit dem Standard-Bildanzeigeprogramm öffnen.

    Kommt immer auf den Verwendungszweck an.

    Allerdings verwendet man bei Executables (=Ausführbare Dateien) normalerweise Run.

    Zitat von chesstiger


    Run ist letztendlich nichts anderes als ShellExecute.
    Der Unterschied ist halt, dass bei ShellExecute der Explorer (Shell) bestimmt, wie die Datei behandelt/ausgeführt (Execute) wird.
    Wenn du also z.B. mit ShellExecute eine Internetadresse öffnest, wird diese vom Explorer mit dem Standardbrowser geöffnet.

    Run hingegen kann wirklich nur ausführbare Dateien ausführen.

    Steht das nicht schon hier? ;)

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Es gibt noch ein paar mehr Unterschiede welche deren parallele Existenz rechtfertigen:

    • Die zugrunde liegende API-Funktion. Bei Run: CreateProcess, bei ShellExecute: ShellExecute (oder auch ShellExecuteEx?)
    • Run ruft direkt nur PE-Dateien auf (exe, com...), Shellexecute schaut erst in der Registry nach welches Programm wie mit der Dateiendung verknüpft ist und ruft dann die Datei entsprechend auf.
    • Das Verhalten bei einen Aufruf von einem Admin-Programm aus einem Nicht-Admin-Skript: Run ignoriert es, ShellExecute bringt die manuelle Abfrage
    • Run gibt die ProcessID zurück, Shellexecute nur ob der Aufruf geklappt hat oder nicht.
    • Mit Run können die std-Streams umgelenkt werden (für Auslesen und schreiben bei Konsolenprogrammen)