Node.js, System.Diagonostics.process und logging.

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Node.js, System.Diagonostics.process und logging.

    Hallo liebe .NETler,
    ich habe mal wieder ein schier unmögliches vorhaben:
    Also ich starte mir meinen Prozess:

    VB.NET-Quellcode

    1. Private WithEvents App As New System.Diagnostics.Process()
    2. 'Viele Zeilen dazwischen!!!!!1111elf
    3. Console.WriteLine("Starte node.js")
    4. App.StartInfo.FileName = Environment.CurrentDirectory + "\Node.packet\node.exe"
    5. App.StartInfo.Arguments = "C:\Users\****\Desktop\Ogarian\OgarianHost\OgarianHost\bin\Debug\Ogar\src\index.js"
    6. App.Start()

    das funktioniert so weit auch, nur wenn ich Daten empfangen möchte, mit [tt]OutputDataReceived[tt]
    dann empfange ich rein garnichts, das Events (auch das Error Received) wird nicht ausgelößt, wenn
    ich jdeoch in der Anwendungskonsole schaue, steht da sehr wohl was..... Nun, geht das mit NJS Überhaupt?

    Und wie kann ich Daten an die anwendung schreiben (also z.b in die konsole "say Hello World!" schreiben)

    MfG LuaX
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @LuaX Mach eine Form mit 2 Button
    - Connect
    - Send
    eine TextBox: Text to send
    eine RichTextBox: Text to receive
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private WithEvents cmd As Process
    3. Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
    4. cmd.StandardInput.WriteLine(TextBox1.Text)
    5. End Sub
    6. Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
    7. StartProcess()
    8. End Sub
    9. Sub StartProcess()
    10. cmd = New Process
    11. cmd.StartInfo.FileName = "cmd.exe"
    12. cmd.StartInfo.WorkingDirectory = ""
    13. cmd.StartInfo.CreateNoWindow = True
    14. cmd.StartInfo.UseShellExecute = False
    15. cmd.StartInfo.RedirectStandardOutput = True
    16. cmd.StartInfo.RedirectStandardInput = True
    17. AddHandler cmd.OutputDataReceived, AddressOf WriteProcessOutput
    18. cmd.Start()
    19. cmd.BeginOutputReadLine()
    20. End Sub
    21. Private Sub WriteProcessOutput(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
    22. If e.Data IsNot Nothing Then
    23. Me.Invoke(Sub() RichTextBox1.AppendText(e.Data & Environment.NewLine))
    24. End If
    25. End Sub
    26. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Jup, das klappt soweit ganz gut, aber sobald ich für cmd.exe node.exe einsetze und starte, stürzt node ab............
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    Und was haben GUIs jetzt mit Konsolen zutun?
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.

    LuaX schrieb:

    aber sobald ich für cmd.exe node.exe einsetze und starte, stürzt node ab
    Was ist node.exe?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jup,
    node.exe ist die Anwendung Node.js
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @LuaX Kann es sein, dass diese Applikation in einem bestimmten Verzeichnis ausgeführt werden muss?
    Den kannst Du vorgeben:

    VB.NET-Quellcode

    1. App.StartInfo.WorkingDirectory = "C:\Temp" ' natürlich muss hier Dein Pfad stehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!