[Frage] kommunikation zwischen 2 Programmen!

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Dennis Alexander.

    [Frage] kommunikation zwischen 2 Programmen!

    Hallo Lieber VBler,



    Ich wollte mal fragen wie man zwischen 2 selbstgeschreiben vb programm ne Verbindung herstellt.



    Hier ein Beispiel was ich meine:



    Programm 1:

    1 Button

    1 Textbox



    Programm 2:

    1 Textbox



    Beschreibung:

    Programm 1 ist gestartet man schreibt z.B. "Hallo" in die Textbox.

    Dann drückt man den Button.

    Darauf hin soll sich Programm 2 öffnen und in der Textbox des neu geöffnetem Programmes soll,

    wie bei diesem Beispiel geannnt "Hallo" stehen.

    8|

    Bitte um Hilfe.



    MFG Schwammekk :thumbsup:
    Hier eine einfache Methode:

    Text wird in Programm1 in die Textbox geschrieben und der Button wird geklickt.
    Programm1 speichert darauf hin den Text der Textbox in einer Datei (z.b. test.txt) und startet einen neuen Thread (Programm2).
    Programm2 überprüft ob die Datei vorhanden ist.
    Wenn ja --> Text aus der Datei auslesen und in der Textbox anzeigen.
    Wenn nein --> nichts machen oder sonst was.

    Hoffe das hilft dir etwas weiter... ;)
    Hmmm... ok mein Fehler, sollte wohl besser lesen. :whistling:
    Also Text in einer Datei speichern: In deinem Fall bei Button-Click-Event)

    VB.NET-Quellcode

    1. My.Computer.FileSystem.WriteAllText("C:\Test.txt", "Text", True)


    Programm2 starten:

    VB.NET-Quellcode

    1. Process.start("Pfad zur Datei")


    Text auslesen:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Me.Text = "Datei Einlesen" ' Titel von deinem Programm
    3. Button1.Text = "Beenden" ' Button Text
    4. Try
    5. Dim auslesen As String = My.Computer.FileSystem.ReadAllText("C:\Dokumente und Einstellungen\xxxx\Desktop\datei.txt") ' Pfad der Datei
    6. TextBox1.Text = auslesen
    7. Catch ex As Exception
    8. MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler") ' Fehler abfangen
    9. End Try
    10. End Sub


    So.... hoffe das es jetzt hilft :sleeping:
    Es gibt verschiedene Möglichkeiten, die von den Erfordernissen abhängig sind. Schöne Floskel... :P

    Wenn beide Programme parallel laufen, ist die Datei-Methode unangebracht. Diese funktioniert nur, wenn Programm A Programm B erst aufruft. In diesem Fall würde ich aber die Informationen einfach als Argumente übergeben, die direkt ausgewertet werden. Ganz so einfach ist diese Materie dann aber doch nicht, wenn man bedenkt, wie viele Möglichkeiten der Interprozesskommunikation eigentlich existieren. Interessant ist der dazu passende Wikipedia-Artikel. Ein Allheilmittel gibt es nicht - dafür gibt es einfach zu viele einflussnehmende Faktoren wie z.B. Performanceaspekte, Plattformen, Architekturen, Entfernung oder die zur Verfügung stehende Rechenleistung (man stelle sich ein Handy mit Windows Mobile im Vergleich zu einem Gaming-Rechenboliden vor...). Das .NET Framework stellt für das Vorhaben eine vordefinierte Remoting-Infrastruktur bereit, welche aber nicht ganz einfach zu verstehen ist. Hier ein Beispiel dazu. Wenn du den MSDN-Artikel verstehst, kannst du anfangen, Daten zwischen Prozessen asuzutauschen.
    Gruß
    hal2000
    Hey...denke mal das dir das hier besser hilft da du es auch anwenden kannst wenn das Programm2 auf einem anderen PC ist...nutze die FTP Variante...ich habe nun lange mit FTP gearbeitet und bin sehr zufrieden. Mein bestes Coding sähe so aus:

    also ich denke mal es reicht wenn ich dir zwei Funktionen gebe....den rest schaffst du schon....du brauchst ein FTP Server und lädst dort ein leeres Textdokument hoch....
    zum auslesen dieses Textdokuments (also textbox füllen) brauchst du diese Funktion.


    VB.NET-Quellcode

    1. While True
    2. Try
    3. BrowserAnfrage = Net.WebRequest.Create(New System.Uri("http://www.DEINFTPSERVER.HOST.DE/test.txt"))
    4. BrowserAntwort = BrowserAnfrage.GetResponse
    5. BrowserStreamErhalt = BrowserAntwort.GetResponseStream
    6. BrowserCodierungsart = System.Text.Encoding.GetEncoding("utf-8")
    7. BrowserStreamRead = New System.IO.StreamReader(BrowserStreamErhalt, BrowserCodierungsart)
    8. textbox1.text = BrowserStreamRead.ReadToEnd
    9. Catch ex As Exception
    10. End Try
    11. end while



    zum schreiben ins textdokument also das uploaden des textstrings brauchst du dies:
    läd text aus textbox1 hoch

    VB.NET-Quellcode

    1. Dim client As New Net.WebClient
    2. client.Credentials = New Net.NetworkCredential("DEIN FTP USERNAME", "DEIN FTP PASSWORT")
    3. client.UploadString("ftp://ftp.DEIN FTP NAME.de/test.txt", Textbox1.text)
    Wenn Programm A Programm B startet.
    Sind die Daten die übergeben werden nur wenig, könntest du auch mit Prameterübergabe arbeiten.
    Beispiel:

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. ' Das Programm welches gestartet werden soll
    4. Option Strict On
    5. Option Explicit On
    6. Public Class Form1
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. For Each Parameter As String In My.Application.CommandLineArgs
    9. Dim StartInfo As String = Parameter
    10. Select Case (StartInfo)
    11. Case "Maximized"
    12. Me.WindowState = FormWindowState.Maximized
    13. Case "Minimized"
    14. Me.WindowState = FormWindowState.Minimized
    15. Case "Normal"
    16. Me.WindowState = FormWindowState.Normal
    17. Case Else
    18. Label1.Text = Parameter
    19. End Select
    20. Next Parameter
    21. End Sub
    22. End Class

    Du müsstest, nur die Daten die übergeben werden auslesen und an deine TextBox übergeben.
    Das Besipiel wird Licht ins dunkle bringen.

    war halt nur so eine Idee.
    Wenn das deine Programme sind geht es einfach mit Win API (Sendmessage), brauchst du mehr Kenntnisse als jetzt ist schwerer als TCP würd ich sagen und außerdem ist eig tcp für sowas nicht gedacht das wär ja über idotisch.