cmd-Fenster verstecken

  • Hallo...
    ich beschäftige mich seit Kurzem mit AutoIt. Hab mir nun was zusammengebastelt was mir eine Batchdatei ausführt mit den entsprechenden Admin-Rechten. Im Vordergrund läuft ein GUI-Fenster mit einer ProgressBar. Nun möchte ich aber die cmd Fenster (es sind mehrere die von der Batchdatei aufgerufen werden), die im Hintergrund durchlaufen, verstecken. Habe es schon mit @SW_HIDE usw. probiert, allerdings wird dabei mein GUI-Fenster ebenfalls versteckt.

    Kann mir da jemand helfen? Danke

  • du kannst doch die .bat mit nem silent parameter starten. damit die dos dinger nich angezeigt werden.

    das war doch iwie mit meinedatei.bat -silent

    oder irre ich mich ^^

  • Wenn du in der Lage bist, den RunAsWait()-Befehl in der Hilfe zu finden, steht dort auch, wie man diesen Befehl ohne CMD-Fenster ausführt

  • Danke für die schnellen Antworten. Leider funktioniert es mit -silent nicht, die cmd-Fenster werden immer noch angezeigt.

    In der Hilfe zu RunAsWait() habe ich bereits nachgeschaut und eben nur @SW_HIDE gefunden, was allerdings in diesem Fall nichts bringt oder ich setze es falsch ein....bin eben noch ein Anfänger in Sachen AutoIt :)

    Ich vermute ja fasst das man die Fenster nicht verstecken kann da die batchdatei ständig andere .bat-Dateien aufruft....

  • Vielleicht so

    Im Batchfile folgende Zeile oben einfügen

    Code
    TITLE=cmd beispiel.bat
    [autoit]


    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>
    #include <SendMessage.au3>

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

    AdlibRegister("_HideCMDWindow",500)

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

    GUICreate("Beispiel", 225, 35, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
    $progress = GUICtrlCreateProgress(25, 10, 180, 20, $PBS_MARQUEE)
    $hProgress = GUICtrlGetHandle($progress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 50)
    GUISetState(@SW_SHOW)

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

    If FileExists("beispiel.bat.") Then
    RunAsWait("Benutzer", "Domäne", "Passwort", 1, "beispiel.bat", @ScriptDir, @SW_SHOW)
    Else
    MsgBox(16, "Fehler", "Datei nicht gefunden")
    EndIf

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

    Func _HideCMDWindow()
    $WindowTitle = 'cmd beispiel.bat'
    WinWait($WindowTitle)
    WinSetState($WindowTitle, '', @SW_HIDE)
    EndFunc

    [/autoit]

    ----------------------------------------------------------------------------------------------------------------------
    Früher musste man Drachen töten und konnte die Jungfrau heiraten.
    Heute gibt es keine Jungfrauen mehr, man muss den Drachen heiraten!

  • Guten Morgen....
    Danke für den Tip. Funktioniert eigentlich auch. Allerdings, wie ich schon vermutet habe, werden die anderen bat.-Dateien (die zwischendurch von der beispiel.bat aufgerufen werden) angezeigt. Naja....kann wohl nix machen.

    Danke für die Bemühungen :)