In der Eingabeaufforderung etwas zurück geben

  • VB6

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Jue.

    In der Eingabeaufforderung etwas zurück geben

    Hi Leute !!!

    Ich möchte ein Programm schreiben, welches etwas in der Konsole zurück gibt. Ich möchte das Programm mit der Konsole aufrufen (z.B.: C:\ordner\>gmwz.exe) und dann etwas zurück geben.

    Wie ist das zu realisieren ?

    Ich benutze VB6

    Jue ;)
    das dürfte tun...

    <font size="1"> Private&nbsp;Declare&nbsp;Function&nbsp;CloseHandle&nbsp;Lib&nbsp;"kernel32"&nbsp;(&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;ByVal&nbsp;hObject&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Long
    Private&nbsp;Declare&nbsp;Function&nbsp;GetExitCodeProcess&nbsp;Lib&nbsp;"kernel32"&nbsp;(&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;ByVal&nbsp;hProcess&nbsp;As&nbsp;Long,&nbsp;lpExitCode&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Long
    Private&nbsp;Declare&nbsp;Function&nbsp;OpenProcess&nbsp;Lib&nbsp;"kernel32"&nbsp;(&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;ByVal&nbsp;dwDesiredAccess&nbsp;As&nbsp;Long,&nbsp;ByVal&nbsp;bInheritHandle&nbsp;As&nbsp;Long,&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;ByVal&nbsp;dwProcessId&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Long

    Public&nbsp;Function&nbsp;ShellX(&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;ByVal&nbsp;PathName&nbsp;As&nbsp;String,&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;Optional&nbsp;ByVal&nbsp;WindowStyle&nbsp;As&nbsp;VbAppWinStyle&nbsp;=&nbsp;vbMinimizedFocus,&nbsp;_
    &nbsp;&nbsp;&nbsp;&nbsp;Optional&nbsp;ByVal&nbsp;Events&nbsp;As&nbsp;Boolean&nbsp;=&nbsp;True&nbsp;_
    &nbsp;&nbsp;)&nbsp;As&nbsp;Long

    &nbsp;&nbsp;'Deklarationen:
    &nbsp;&nbsp;Const&nbsp;STILL_ACTIVE&nbsp;=&nbsp;&H103&
    &nbsp;&nbsp;Const&nbsp;PROCESS_QUERY_INFORMATION&nbsp;=&nbsp;&H400&
    &nbsp;&nbsp;Dim&nbsp;ProcId&nbsp;As&nbsp;Long
    &nbsp;&nbsp;Dim&nbsp;ProcHnd&nbsp;As&nbsp;Long

    &nbsp;&nbsp;'Prozess-Handle&nbsp;holen:
    &nbsp;&nbsp;ProcId&nbsp;=&nbsp;Shell(PathName,&nbsp;WindowStyle)
    &nbsp;&nbsp;ProcHnd&nbsp;=&nbsp;OpenProcess(PROCESS_QUERY_INFORMATION,&nbsp;True,&nbsp;ProcId)

    &nbsp;&nbsp;'Auf&nbsp;Prozess-Ende&nbsp;warten:
    &nbsp;&nbsp;Do
    &nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;Events&nbsp;Then&nbsp;DoEvents
    &nbsp;&nbsp;&nbsp;&nbsp;GetExitCodeProcess&nbsp;ProcHnd,&nbsp;ShellX
    &nbsp;&nbsp;Loop&nbsp;While&nbsp;ShellX&nbsp;=&nbsp;STILL_ACTIVE

    &nbsp;&nbsp;'Aufräumen:
    &nbsp;&nbsp;CloseHandle&nbsp;ProcHnd

    End&nbsp;Function

    Private&nbsp;Sub&nbsp;Command1_Click()
    &nbsp;&nbsp;&nbsp;&nbsp;MsgBox&nbsp;ShellX("notepad.exe",&nbsp;vbMinimizedFocus)
    End&nbsp;Sub </font>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „makrele32“ ()

    @Malcom: ich hab das so verstanden:

    du startest eine anwendung (=*.exe-datei). diese anwendung erarbeitet irgendetwas und gibt an das system irgendwo (wo weiss ich leider auch nicht ) einen wert zurück.. und dieser wert kann ausgelesen werden..

    dieser fehlercode kann dann ausgewertet werden und in einer bedingung (if..then..;select case...) darüber entschieden werden, was bei welchem fehlercode passieren soll.

    meist bedeutet ein "fehlercode" von 0, das keine fehler aufgetreten sind :)
    Er meint, dass du in der Dos-Console aus ein in VB6 geschriebenes Programm aufrufst, was dann wiederum etwas in die Console reinschreibt, von der aus es geöffnet wurde. (Jue sitzt gerade neben mir, er hat mir diesen Post diktiert)

    Felix Kröger & Jue ;)
    Etwas in die DOS-Console zu schreiben ist einfach:

    <pre>
    Shell ("command.com", vbnormal)
    SendKeys "cd\"
    SendKeys "C:"
    SendKeys "cd Windows"
    SendKeys "md Testordner"
    </pre>

    mfG,

    Malcolm

    [edit]Nicht getestet.[/edit]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Malcolm“ ()

    Hi Leute !!!

    Ich glaub ich versteh' euch nicht oder ihr mich nicht. Wahrscheinlich war ich bei meiner Fragestellung und dem letzten Post etwas ungenau. Ich versuche euch mein Problem noch mal anhand eines Beispieles zu erläutern ...

    Gehen wir davon aus, dass der Befehl "echo" eine EXE-Datei names "echo.exe" ist, die in VB6 geschrieben wurde. Wenn ich den Befehl "echo" mit dem Parameter "Hallo" in die Konsole eintippe und Enter drücke, wird die EXE-Datei echo.exe aufgerufen. Im Programm wird der Command - String (also die Parameter die mitgeliefert wurden, in diesem Fall "Hallo") wieder in die Konsole geschrieben, von wo aus die echo.exe aufgerufen wurde. Nach dem Aufrufen wird dann in der Konsole folgendes stehen:

    C:\Dokumente und Einstellungen\Jue\>echo Hallo
    Hallo
    C:\Dokumente und Einstellungen\Jue\>


    Meine Frage war, wie ich diese echo.exe schreiben müsste. Ich weiß zwar, wie man den Command - String ausließt aber nicht wie ich das Ergebnis in die Konsole schreib'.

    Jue ;)
    Hallo, Jue.

    Das geht mit dem Befehl SendKeys, zumindest solange das DOS-Fenster den Fokus hat.

    Du schreibst einfach in´s Sub Main() den Code, um Command in einzelne Zeichen zu teilen und übergibst dann jedes einzelne Zeichen mit SendKeys ans DOS-Fenster.

    mfG,

    Malcolm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Malcolm“ ()

    Ich habe verstanden, was du meinst (die anderen scheinbar immer noch nicht).

    Eventuell hilft dir das weiter:

    internettrash.com/users/fdb/cons.htm
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum