string durch variablen ersetzen und ConsolenProggi während der Laufzeit verstecken

  • Hallo Profis,

    ich glaube ich stehe im Wald und sehe ihn vor lauter Bäumen nicht... ;( Die folgende Codezeile funzt einwandfrei.

    Code
    $Status = Run("bcu64.exe /setvalue:""Password Minimum Length"",""4"" /cspwdfile:pw03.bin /verbose", "", "", $STDOUT_CHILD)

    Wenn ich aber bcu64.exe als Variable einsetze bekomme ich als Return nicht die PID sondern 0

    Also passt der Aufruf wohl nicht.

    Code
    $Status = Run("" & $sSecHPPW & " /setvalue:""Password Minimum Length"",""4"" /cspwdfile:pw03.bin /verbose", "", "", $STDOUT_CHILD)

    Auch der Aufruf ohne führendes " nach der Klammer(also Run($sSecHPPW & "...) geht nicht.


    Hat wer eine Idee wie ich bcu64.exe und pw03.bin als Variablen in den String einfügen muss:?::?::?:


    Die 2. Frage: wenn mein als Consolenprogramm gestartetes Script keine Parameter feststellt in $CmdLine, starte ich ein GUI.
    gibt es die Möglichkeit das Fenster des Proggis zu verstecken, sodass nur das GUI sichtbar ist?

    Einmal editiert, zuletzt von hipfzwirgel (18. Oktober 2019 um 11:38)

  • hipfzwirgel 18. Oktober 2019 um 11:34

    Hat den Titel des Themas von „string durch variablen ersetzen“ zu „string durch variablen ersetzen und ConsolenProggi während der Laufzeit verstecken“ geändert.
  • Tipp: Wenn du Anführungszeichen im String hast musst du ihn mit ' einfassen anstatt der ". Daher mache ich es generell nur noch mit ', dann braucht man darauf nicht zu achten :)

    Und deine Dateien sind hier ja auch nur strings als ganz normal wie jede Variable einbinden :

    Code
    $fileExe = 'bcu64.exe'
    $fileBin = 'pw03.bin'
    $Status = Run($fileExe & " /setvalue:"Password Minimum Length","4" /cspwdfile:' & $fileBin & ' /verbose', '', '', $STDOUT_CHILD)
    
    $fileBin = 'pw03.bin'
    $Status = Run($sSecHPPW & ' /setvalue:"Password Minimum Length","4" /cspwdfile:' & $fileBin & ' /verbose', '', '', $STDOUT_CHILD)
  • Hallo Moombas,

    ich habe eben nochmal bei mir getestet. Teil 1 meines Themas ist gelöst. Ich Dummlack hatte lediglich eine falsche Variable erwischt. :Face:
    Da passten dann natürlich die Parameter nicht. So kann das dann nicht funktionieren.

    Bleibt aber noch die Frage nach dem Verstecken des ConsolenFenster wenn daraus ein GUI geöffnet wird...:?:

    • Offizieller Beitrag

    Oder mit StringFormat arbeiten:

    $cmd = StringFormat('%s /setvalue:"Password Minimum Length","4" /cspwdfile:pw03.bin /verbose', $sSecHPPW)

    $Status = Run($cmd, "", "", $STDOUT_CHILD)

    Da AutoIt zwei Stringbezeichner zulässt, sollte man das auch nutzen und innere von äußeren Strings durch Verwendung unterschiedlicher Markierung abgrenzen. Ist übersichtlicher als die Maskierung mit sich selbst.

  • Hallo Bugfix,

    danke für deinen Hinweis. Hast du eine Idee wie ich das gestartet Consolenfenster verstecken kann wenn ich das Gui aufrufe?

    ich hatte es mal folgender maßen versucht:

    Das GUI wird gestartet mit der Func Graph()

    dort hatte ich dann folgenden Code als erste Zeile getestet:

    Code
    GUISetState("[Class:ConsoleWindowClass]", @SW_HIDE) ;oder mit Title
    
    GUISetState("Administrator: Comand Prompt - bbc.exe", @SW_HIDE)


    das Consolenfenster ist aber nicht verschwunden...