CMD Steuerung

  • Hi,

    ich habe ein Programm, dass ich über die cmd starte Es handelt sich hierbei um die gpg.exe zu Erzeugung von Schlüsselpaaren. Wenn ich dieses nun mit dem Paramter "gpg.exe --gen-key" starte kommen noch mehrere Fragen (brauchen immer unterschiedliche lange bis sie erscheinen) nach Schlüsseltyp. Länge ect. Gibt es eine Möglichkeit die cmd versteckt zu starten und irgendwie auf die Fragen wenn sie in der cmd auftauchen zu reagieren? Eine Übergabe der Antworten als Parameter ist allerdings nicht möglich.

    P.s. im Anhang mal die gpg.exe und die iconv.dll (wird für gpg.exe benötigt).

  • Quellcode fehlt zum helfen :-p

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hi,
    bin der gleichen Meinung wie Alina. Bitte den Quelltext posten das erspart unnötiges erfragen und hellsehen.

    Mit den Befehlen

    [autoit]

    Run, RunWait RunAs, RunAsWait sowie Shellexecute

    [/autoit]


    kann man alle Programme mit der Option HIDE verstecken.
    Das steht aber nochmal genauer in der Hilfe.

    MfG
    Der_Doc

  • Das Problem ist nicht das HIDE. Ich weiß nicht wie ich Informationen aus einer CMD auslesen bzw. Daten senden kann wenn der prozess in der CMD noch nicht beendet ist. Sprich StdoutRead nicht funktioniert. Von daher sind auch Scripte wie zum Beispiel das hier Funktionslos:

    [autoit]

    Func _CMDRead($command)
    Local $CMDRead

    $CMD = Run(@ComSpec & " /c " & $command, @SystemDir, @SW_HIDE, $STDOUT_CHILD)

    While 1
    $CMDRead &= StdoutRead($CMD)
    If @error Then ExitLoop
    WEnd
    Return SetError(@error, @extended, $CMDRead)
    EndFunc

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • dann versuch doch das $CMDRead abzufragen, ob denn bereits Werte enthalten...
    ich hab das jetzt nicht ausprobiert, ob das so klappt. Biite nur als Denkanstoß verwenden...

    [autoit]

    Func _CMDRead($command)
    Local $CMDRead

    $CMD = Run(@ComSpec & " /c " & $command, @SystemDir, @SW_HIDE, $STDOUT_CHILD)

    While 1
    $CMDRead &= StdoutRead($CMD)
    If $CMDRead = "" Then ContinueLoop
    If @error Then ExitLoop
    WEnd
    Return SetError(@error, @extended, $CMDRead)
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Teilweise schon allerdings nicht für alle Parameter der Schlüsselgenerierung. Werde das von Schnuffel heute Abend mal testen, wenn nicht habe ich auch schon einen alternativen Weg gefunden.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.