Se prog già aperto in systray apri form

giovedì 05 febbraio 2009 - 17.55

aleroot Profilo | Junior Member

Ho creato un'applicazione che una volta avviato va in system tray, vorrei che se l'utente lancia un'altra instanza del programma, e il prog è già avviato e minimizzato a icona mi aprisse il form principale del programma già aperto, e non mi aprisse un'altra istanza del programma.

è possibile fare una cosa del genere ?

Jeremy Profilo | Guru

A parte il fatto di poterci ragionare insieme....intanto prova a vedere se selezionando "Rendi ad istanza singola" nelle proprietà del progetto ---> Scheda Applicazione.... se già ti risolve il problema o meno.

Facci sapere..
Ciao

aleroot Profilo | Junior Member

non mi apre l'applicazione due volte, però non mi tira su il form se l'applicatico è già ridotto a icona .....

Jeremy Profilo | Guru

Guarda...sinceramente non so se esiste un modo più corretto per farlo....però...se io avessi bisogno di fare una cosa del genere, proverai a vedere se riuscirei a cavarmela leggendo ogni tot millisecondi, magari in un thread separato, la lista dei processi attivi usando il metodo Process.GetProcesses.
Nel momento in cui dovessi trovare due processi uguali della mia applicazione, Killerei il secondo processo e farei mostrare il mio form principale.

Questo è quello che mi viene al momento...se mi dai un pò di tempo, magari faccio qualche ricerca anche io.

Facci sapere..
Ciao.

alexmed Profilo | Guru

Ciao
Premesso che non l'ho mai usato, qui forse trovi un'aiuto

http://blogs.dotnethell.it/alebadalin/VERIFICA-SE-LAPPLICAZIONE-E-GIA-ATTIVA__11347.aspx

Ciao
alexmed

aleroot Profilo | Junior Member

Ho trovato Questo :

http://www.vbforums.com/showthread.php?t=398309

Jeremy Profilo | Guru

Ma guarda un pò.... allo stesso Link la mia proposta e quella di alexmed

Ciao...

aleroot Profilo | Junior Member

Una cosa non ho capito; la terza possibilità ovvero rendere l'applicativo a istanza singola e poi andare a lavorare dentro l'evento :
My.Application.StartupNextInstance

come posso richiamere tale evento con vb.net?

Jeremy Profilo | Guru

Nella cartella MyProject del tuo progetto c'è un file che si chiama Application.Designer.vb l'evento lo gestisci in quel file.
Facci sapere...
Ciao

aleroot Profilo | Junior Member

no devi andare in propietà progetto, "view Applications Events"
ti apre applicationevents.vb
li ci metti :

Imports Microsoft.VisualBasic.Devices Imports Microsoft.VisualBasic.ApplicationServices Namespace My Class MyApplication 'StartupNextInstance: Raised when launching a single-instance 'application and the application is already active. Private Sub MyApplication_StartupNextInstance(ByVal sender As Object, _ ByVal e As StartupNextInstanceEventArgs) _ Handles Me.StartupNextInstance e.BringToForeground = True Form1.Show() End Sub End Class End Namespace

Jeremy Profilo | Guru

>no devi andare in propietà progetto, "view Applications Events"
>ti apre applicationevents.vb
>li ci metti :

Guarda che è lo stesso file che ti ho indicato io.

Ciao....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5