Exe1 mit Exe2 steuern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Toolmaster.

    Exe1 mit Exe2 steuern

    Guten Morgen,
    ich habe ein kleiner Problem bei dem ihr mir sicher helfen könnt.

    Also exe1 ist meine Datei mit der ich exe2 steuern möchte. In Exe1 habe ich einen Verweis auf exe2 gesetzt.

    in exe2 habe ich folgenden Code:

    VB.NET-Quellcode

    1. Public Shared Sub test(ByVal hugo As String)
    2. MsgBox(hugo)
    3. Me.close
    4. End Sub​


    In Exe1 ist nur ein Button mit dem Aufruf:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. test("Vom Loader")
    3. End Sub​


    Die MsgBox wird ausgeführt aber exe2 schließt sich nicht.

    Was habe ich übersehen. Grüße Georg
    @Toolmaster Das dürfte gar nicht compilieren, da Du in einer Shared Prozedur auf die Form-Instanz zugreifst.
    Probier mal dies:

    VB.NET-Quellcode

    1. ' Exe 2
    2. Public Sub test(ByVal hugo As String)
    3. MessageBox.Show(hugo)
    4. Me.Close()
    5. End Sub
    6. ' Exe 1
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. Using dlg = New Exe2.Form2
    9. dlg.test("bla")
    10. End Using
    11. End Sub
    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!

    Toolmaster schrieb:

    der Rest vom Code wird ignoriert.
    Wie äußert sich das?
    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!
    Ja sicher. Die MessageBox blockiert die Abarbeitung des weiteren Codes. Erst wenn die MessageBox geschlossen wird, geht's mit der Close-Zeile weiter. Da müsstest Du ggf. den Erstaufruf mit Async/Await gestalten, damit es quasi "gleichzeitig" läuft.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Toolmaster Teile Deinen Code auf in a) 2 Buttons, b) 2 Prozeduren (dies läuft):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. ' Exe 2
    2. Public Class Form2
    3. Public Sub test(ByVal hugo As String)
    4. MessageBox.Show(hugo)
    5. End Sub
    6. Public Sub test2()
    7. Me.Close()
    8. End Sub
    9. End Class
    10. ' Exe 1
    11. Public Class Form1
    12. Dim dlg As Exe2.Form2
    13. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. If dlg Is Nothing OrElse dlg.IsDisposed Then
    15. dlg = New Exe2.Form2
    16. End If
    17. dlg.test("bla")
    18. If Not dlg.Visible Then
    19. dlg.Show()
    20. End If
    21. End Sub
    22. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    23. If dlg IsNot Nothing AndAlso Not dlg.IsDisposed Then
    24. dlg.test2()
    25. End If
    26. End Sub
    27. 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!
    Ups, da hab ich Exe1 und Exe2 durcheinandergewürfelt. Ich dachte Exe1 soll Exe2 aufrufen und sich dann selber schließen.
    Exe1:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Using Dialog As New Exe2.FormExe2
    3. Dialog.ShowMessage(":-)")
    4. End Using
    5. End Sub


    Exe2:

    VB.NET-Quellcode

    1. Public Sub ShowMessage(Message As String)
    2. MessageBox.Show(Message)
    3. Me.Close()
    4. End Sub


    --> läuft
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Toolmaster - darf ich mal fragen wofür sowas gut ist? Alles was EXE2 machen soll kann ja auch in EXE1 ausgeführt werden. Und wenn man ein fremdes Programm steuern will geht es ja auch nicht da das ja fertig kompiliert ist. Also nur für mich als Verständnisfrage - ich habe den Sinn noch nicht verstanden. Und sonst würde es ja auf eine beabsichtigten/unerlaubten Fremdzugriff hinauslaufen

    Toolmaster schrieb:

    sondern blende es nur aus und wieder ein.
    Dann arbeite mit

    VB.NET-Quellcode

    1. .Visible = True
    2. ' bzw.
    3. .Visible = False
    und nimm als Rahmen meinen Code aus Post #8.
    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!