"Verbindung" zwischen Form1 und Console erstellen mithilfe von Commands?

  • VB.NET

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

    "Verbindung" zwischen Form1 und Console erstellen mithilfe von Commands?

    Abend,
    ich wollte fragen ob es möglich ist, eine Verbindung zwischen einer Form (z.B. Form1) und einer Konsolenanwendung herzustellen.

    Ich habe dazu leider nichts gefunden . . . .

    Was ich schonmal gemacht habe ist einfach nur dass wenn sich Form1 öffnet, sich auch eine Konsolenanwendung öffnet.

    Das ganze habe ich mir folgendermaßen vorgestellt:

    Man schreibt z.B. in die Console "start", drückt Enter, sendet somit den Befehl zu Form1 und startet somit einen Timer (der Timer ist jetzt nur ein Beispiel).

    Die Console soll also den bzw. die Buttons ganz einfach ersetzen. Die einzelne Befehle (oder Commands von mir aus) sollten dann vorgeschrieben sein was was bei dem jeweiligen

    Command passieren soll.

    Ist das aber eig. möglich ?!
    Du sollest deinen Beitrag nicht so schnell pushen.
    Du hast gestern Abend/Nacht gepostet, und jetzt um 12 Uhr pushst du deinen Beitrag schon wieder.

    Warte einfach mal ab, die Leute stehen gerade erst auf, es ist Wochenende ;)


    Und jetzt mal zu deinem Problem:


    Ist die Konsolenanwendung im selber Projekt wie die WinForms-Anwendung?
    Wenn dies der Fall ist, solltest du Funktionen in deiner WinForms-Anwendung eigentlich mit Form1.BeispielFunktion() aus der Konsolenanwendung aufrufen können.

    Gruß EZTEQ
    Kannst Du bitte mal Dein Szenario etwas ausführlicher beschreiben.
    Ist eine Console überhaupt erforderlich?
    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!

    thefiloe schrieb:

    (zumindest in c# <-- müsste hier auch gehen)
    Selbstverständlich.
    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!
    Hab jetzt den Code nicht genau angeschaut aber das sieht eher danach aus, dass eine Konsole IN der Form angedockt wird. (wegen des SetParent gehe ich mal davon aus)
    Ich denke eher er will eine Konsole nebenbei starten und zwar halt als extra "Fenster" wo er dann den in, output stream mit Console.* kontrollieren kann. Sprich z.B. "debugging-Meldungen" usw. ausgeben oder als alternative zu den buttons usw. in der konsole etwas eintippen. Um dies zu erreichen erstelle ich in C# einfach eine Konsolenanwendung und starte in der Main-Methode die Form. Wie man das jedoch mit dem inputstream hinbekommt keine ahnung. Man müsste irgendwie etwas parallel laufen lassen. Hat bei mir jedoch nie wirklich funktioniert.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    @NeX#: Meinst Du so was, Form mit 3 Button:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <DllImport("kernel32", SetLastError:=True)> _
    4. Private Shared Function AllocConsole() As Boolean
    5. End Function
    6. <DllImport("kernel32", SetLastError:=True)> _
    7. Private Shared Function FreeConsole() As Boolean
    8. End Function
    9. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    10. If Not AllocConsole() Then
    11. ' anhängen der Konsole fehlgeschlagen
    12. End If
    13. End Sub
    14. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    15. Console.WriteLine("Hello World!")
    16. End Sub
    17. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    18. If Not FreeConsole() Then
    19. ' abhängen der Konsole fehlgeschlagen
    20. End If
    21. End Sub
    22. 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!
    Ok ich versuch meine Frage nochmals zu stellen aber anders zu formulieren...

    Ich habe da ein Programm, dass bei einem Klick auf Button1 eine Messagebox erscheinen lässt.

    Jetzt will ich aber, dass die Messagebox ebenfalls erscheint, wenn ich in einer Konsole, welche im Programm mit eingebunden ist (also alles in einer Form), ein Kommando gebe,
    z.B. "start".
    Das heißt also, ich schreibe in die Konsole "start", drücke Enter und die Messagebox erscheint.

    Hoff ihr habt es jetzt verstanden :))

    NeX# schrieb:

    Hoff ihr habt es jetzt verstanden
    Ich hoffe, Du hast Dein Problem so beschrieben, dass wir es so verstanden haben, wie Du es meinst.
    Hast Du nun ein Programm mit Console oder hast Du nur eine Console?
    Gib in der Console einen Text ein, werte ihn aus und schreib

    VB.NET-Quellcode

    1. System.Windows.Forms.MessageBox.Show("bla")
    wenn Du die entsprechenden Bibliotheken eingebunden hast.
    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!
    ... letzter versuch ansonsten schließ ich hier einfach weils nichts bringt:

    Ich will ein Programm erstellen, dass mit Timer, Textboxen, etc.. funktioniert bzw. hat, allerdings alles über einer Console steuern!

    die Windows Form wird nicht erscheinen, sondern nur die Console über der man die Timer starten kann, etc.. die aber in der Windows Form enthalten sind (die Windows Form macht man dann einfach unsichtbar).
    Mensch sag das doch gleich. Du brauchst keine Form für einen Timer. Der Timer ist einfach nur eine Klasse im namespace System.Windows.Forms. Neuen Timer instanzieren, interval setzten und tickevent handler setzten. Starten fertig.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Nimm nicht den Form.Timer, sondern den Threading.Thread.Timer.
    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!