Wenn Programm schon läuft, maximieren

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von alca.

    Wenn Programm schon läuft, maximieren

    Hallo,

    Ich hätte gerne, wenn mein Programm läuft und es nocheinmal gestartet wird, das die schon laufende instanz "windows normal size" einnimmt... das heisst einfach aus der "Taskleiste" öffnet.

    Wie ich herausfinde ob mein Programm schon läuft, weis ich schon... wie ich jedoch dann sagen kann das es die schon laufende Instanz "in den normal mode" bringen soll weis ich nicht.



    VB.NET-Quellcode

    1. AcceptButton = (Button1)
    2. Dim zähler As Integer = 0
    3. Dim pl As Process() = Process.GetProcesses
    4. For Each p As Process In pl
    5. If p.ProcessName = My.Application.Info.Title Then
    6. zähler += 1
    7. End If
    8. Next
    9. If zähler > 1 Then
    10. MessageBox.Show("Programm läuft bereits!")
    11. 'Hier soll das schon laufende Programm geöffnet werden.
    12. End
    13. Else
    14. End If



    gruss schnibli
    Geh mal in die MyApplication-Ereignisse und setz mal in

    VB.NET-Quellcode

    1. Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    2. End Sub
    einen Haltepunkt. Da müsstest Du auf Me und Me.Next zugreifen können.
    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!
    Jedoch kann man dies nicht auch mit

    Quellcode

    1. -nosingleinstance

    Als Startparameter umgehen?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hallo, ich bin jetzt mal so weit:

    VB.NET-Quellcode

    1. Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    2. End Sub

    was ist jetzt das Sinvollste um statt das Programm neu zu starten, die schon laufende Instanz Anzuzeigen?
    Weiß aber nicht ob es funktioniert.

    VB.NET-Quellcode

    1. Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    2. e.cancel = true
    3. Me.size = (200,200)
    4. End Sub
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    hmm anscheinend funktioniert dann e.cancel nicht.
    Und das Me.size könntest du ja dann auch FormName.size = Deine Formgröße ändern
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Wie wäre es mit Haltepunkt in die leere Sub reinsetzen und zunächst erforschen, was da überhaupt verfügbar ist?
    Was willst Du mit e.Cancel erreichen?
    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!
    Hallo,

    Hab es jetzt mal so ausprobieret:

    VB.NET-Quellcode

    1. Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    2. MsgBox("hallo")
    3. 'Start.Size = New Size(616, 410)
    4. End Sub


    jedoch erscheint auch beim 2. start keine meldung

    RodFromGermany schrieb:

    Was willst Du mit e.Cancel erreichen?
    Grundsätzlich dachte ich, da die Sub StartupNextInstanc beim Start einen neuen Instanz ausgelöst werden sollte,
    dieser vorgang mit e.Cancel = True gestoppt werden kann, und daruch eben keine neue Instanz gestartet wird.

    Edit://
    @alca
    lol. Ist das dein Ernst? Versuchst du hier zu helfen, oder nur deinen Beitragszählen hochzubekommen.
    Das trägt genau 0% zur Problembehebung von schnibli's Frage / Problem bei.
    Da man schnell einen Code hinzurotzen, der überhaupt nicht gefragt ist... das hättest du dir sparen können.


    Edit2://
    Entschuldigung, wenn ich dich vielleicht zu aggresiv "angegangen" bin.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Was ich möchte ist, dass das Programm nicht 2 mal startet, sondern beim 2. mal starten das Programm einfach "e.WindowState = FormWindowState.Maximized" aufruft


    Update


    Das war was ich wollte

    Projekt -> Eigenschaften -> Anwendung
    bei "Einzelinstanzanwendung erstellen" einen Haken reinmachen
    Projekt -> Eigenschaften -> Anwendung
    Haken bei Einzelinstanzanwendung erstellen.
    Probier mal dies:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Namespace My
    2. ' Für MyApplication sind folgende Ereignisse verfügbar:
    3. '
    4. ' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
    5. ' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung nicht normal beendet wird.
    6. ' UnhandledException: Wird ausgelöst, wenn in der Anwendung eine unbehandelte Ausnahme auftritt.
    7. ' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist.
    8. ' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
    9. Partial Friend Class MyApplication
    10. Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    11. Me.ApplicationContext.MainForm.WindowState = FormWindowState.Maximized
    12. End Sub
    13. End Class
    14. End Namespace
    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!