RunWait()/ShellExecuteWait() compiliertes Script!!

  • Hey!

    Wieso kann Autoit nicht mit hauseigen Scripten umgehen? In kann mit den unten aufgelisteten Möglichkeiten das Compilierte Script nicht wie gewollt in ein anderes einbinden!

    [autoit]

    ShellExecuteWait(@ScriptDir & "\comp_.exe"); "comp_.exe" = Compiliertes-Script
    MsgBox(0,0,0); erscheint gleich nach aufruf des Compilierten-Scriptes obwohl das Compiliertes-Script nicht beendet ist

    [/autoit]


    Selbe:

    [autoit]

    RunWait(@ScriptDir & "\comp_.exe")

    [/autoit]


    Slebe:

    [autoit]

    $PID = Run(@ScriptDir & "\comp_.exe")
    ProcessWaitClose($PID)

    [/autoit]
  • Hallo freakisch,

    Zitat

    Wieso kann Autoit nicht mit hauseigen Scripten umgehen? In kann mit den unten aufgelisteten Variante das Compilierte Script nicht wie gewollt in ein anderes einbinden!

    die ersten beiden starten ein Programm (auch deines) und warten bis es beendet ist, die 3 Variante startet ohne zu warten. Wenn also die ersten beiden sofort eine MsgBox ausgeben, ist a) dasProgramm gestartet worden und schon wieder korrekt beendet oder b) ein Fehler aufgetreten und es wurde aucg beendet. Prüf doch mal den ExitCode des aufgerufenen Programmes,

    mfg (Auto)Bert

  • Also beim Exit code ist kein Fehler erkenbar,
    Also m Script startet eine Anwendung! Wartet bis die Anwendung beendet ist, und verschiebt Daten.
    ---> Compieliertes-Script 1

    Dann erstelle ich ein anderes Script das soll warten bis das Compieliertes-Script 1 beendet wird.
    ----> Compieliertes-Script 2

    So ist es bei mir aufgebaut!

  • Naja aber um erhlrich zu sein, ist das bei jedem Script sowieso gleich außerdem ist mir dieser Fehler schon öfters aufgefallen, ich glaub es wird nichts bringen ein Silent installations Script in dem 3 verschiedene Funktionen zu posten?

  • [autoit]

    RunWait(@ScriptDir & "\Firefox.exe" & " /S"); AutoIt Version: 3.3.0.0

    [/autoit][autoit]

    RunWait(@ScriptDir & "\FirefoxSilent.exe"); AutoIt Version: 3.3.0.0

    [/autoit]
  • Hallo freakisch,

    ich dachte du würdest bereits den ExitCode abfragen (kann nichts davon sehen , außerdem

    [autoit]

    RunWait(@ScriptDir & "\Firefox.exe" & " /S"); AutoIt Version: 3.3.0.0

    [/autoit]

    warum heist es auf einmal FireFox und nicht mehr comp.exe aus #1

    [autoit]

    RunWait(@ScriptDir & "\comp_.exe")

    [/autoit]

    diese Zeilen laufen mit Sicherheit, wenn du nicht bereit bist deine Skripte zu posten wirst du warscheins niemand finden, der bereit ist dir zu helfen :cursing:

    mfg (Auto)Bert

    2 Mal editiert, zuletzt von AutoBert (14. Mai 2009 um 21:26)

  • Ja weil comp_.exe nur zu verdeutlichung war. comp = compiliert

    [autoit]

    Func OnAutoItExit()
    MsgBox(0,0, @exitCode)
    EndFunc; exitcode = 0

    [/autoit]

    Einmal editiert, zuletzt von freakisch (14. Mai 2009 um 21:27)

  • Hallo freakisch,

    benutz die Hilfe und skripte selbst, oder such dir einen dümmeren der für dich skriptet, die Zeile mit FireFox läuft 100%

    mfg (Auto)Bert

  • Ehmm... omg??!

    Hab ich jemanden aufgefordert für mich zu scripten? Offenbar hast du nicht verstanden worum es geht? Es geht darum das Autoit eine Compiliertes Script nicht richt verarbeiten kann? Niemand soll mir was Scripten meine Scripte sind fertig!

  • Hallo freakisch,

    nochmal, RunWait funktioniert: es wartet solange bis das gestartete Programm beendet ist (aus welchem Grund auch immer). Siehe meinen Datei-Anhang,

    mfg (Auto)Bert

  • Ich erkläre den Vorgang etwas genauer:

    [autoit]

    #RequireAdmin
    RunWait(@ScriptDir & "\Firefox.exe" & " /S")

    [/autoit]


    ---->Und jetzt wird dieses Script Compiliert und nennt sich FirefoxSilent.exe

    Jetzt Startet ein anderes Script das FirefoxSilent.exe aufruft:

    [autoit]

    RunWait(@ScriptDir & "\FirefoxSilent.exe")
    MsgBox(0,0,0)

    [/autoit]


    ..... Fazit: Das Script wird zwar geöffnet aber die MsgBox wird angezeigt bevor Firefox installiert worden ist und das verstehe ich nicht?

  • Hallo freakisch,

    dann versuch mal ob du dieses kleine Skript nach dem kompiieren mit runwait aufrufen kannst:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #RequireAdmin
    #include <WindowsConstants.au3>
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Main()

    [/autoit] [autoit][/autoit] [autoit]

    ; hauptfenster
    Local $Form = GUICreate("Ich spiel den Fuchs", 220, 285, 250, 450, $WS_POPUP)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Label = GUICtrlCreateLabel("Title", 10, 5, 30)
    Local $BTNEXIT = GUICtrlCreateButton("&Exit", 30, 50, 80)
    GUICtrlSetOnEvent(-1,"_Exit")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Main

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    wenn nicht versuchs ohne #requireadmin. In deinem Skript seh ich zwar immer noch nicht das du ExitCode abfrägst, bzw. @error gehe aber davon aus, dass es an #requireadmin liegt, hättest du geich am Anfang dein Skript gepostet sind ja eh nur 2 Zeilen, hättest du uns beiden viel Zeit sparen können,

    mfg (Auto)Bert

  • Erst ma danke das du dir so mühe gibst!!!!!!
    Der ExitCode bei mir ist immer 0

    Aber selbst das von dir gepostet funktioniert einfach mir RunWait nicht, die MsgBox kommt wieder bevor die Anwendung geschlossen ist!

  • Hallo freakisch,

    welche MsgBox, ich hab keine in dem kleinen Skript das ich zum Testen gepostet hab und in den 2 Zeilen deines Skriptes kann ich keine übersehen haben, kann es sein dass dieser Systemdiaog kommt:

    autoit.de/wcf/attachment/4779/

    Wenn ja, einfach als Adminbistrator über diesen Dialog anmelden, wenn nein poste das komplette Skript wie du mein Beispiel aufrufst. Außerdem hätte dann ja der Fehler bzw. die Aufforderung sich unter einem anderen Namen anzumelden auch mit meinen beiden EXEn auftreten müssen, warum hast du davon nichts geschrieben? Auch hast du mir nicht mitgeteilt, was passiert wenn du es ohne #RequireAdmin aufrufst. Trag mal zum Testen bei mir den ExitCode 234 ein, was passiert dann in deiner virtuellen ExitCode-Abfrage?
    Ich kann nämlich immer noch nicht erkennen wo du den ExitCode abfrägst.

    mfg (Auto)Bert

    3 Mal editiert, zuletzt von AutoBert (15. Mai 2009 um 02:27)

  • Im 9. Beitrag steht die ExitCode-Abfrage.

    Habs noch hinbekommen offenbar hat es an Win7 RC gelgen in WinXP läuft es tadelos!