Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Controllo applicazione già aperta
venerdì 04 dicembre 2009 - 10.19
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
drigo83
Profilo
| Senior Member
205
messaggi | Data Invio:
ven 4 dic 2009 - 10:19
Ciao a tutti, qualcuno mi sa dire come si fa in VB.NET a controllare se una applicazione è già aperta, in modo che non si apra 2 volte?
Grazie
Andrea
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
ven 4 dic 2009 - 10:26
Ciao.
inserisci questo codice nella classe program (se stai scivendo in C#)
static bool PrevInstance()
{
Process pcur = Process.GetCurrentProcess();
foreach (Process p in Process.GetProcesses())
{
if (pcur.Id != p.Id)
{
if (pcur.ProcessName.ToUpper() == p.ProcessName.ToUpper())
{
if (pcur.SessionId.ToString().ToUpper() == p.SessionId.ToString().ToUpper())
{
return false;
}
}
}
}
return true;
}
poi nel Main scrivi
if (!PrevInstance())
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Start(new Form1());
}
else
{
MessageBox.Show("Applicazione già aperta");
}
ciao
Cristian Barca
drigo83
Profilo
| Senior Member
205
messaggi | Data Invio:
ven 4 dic 2009 - 10:28
Sto scrivendo in VB...va bene uguale?
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
ven 4 dic 2009 - 10:36
Ovviamente NO.
questo è il codice tradotto.
Inseriscilo nella form principale (quella che parte all'avvio dell'applicazione)
Public Shared Function PrevInstance() As Boolean
Dim pcur As Process = Process.GetCurrentProcess()
Dim p As Process
For Each p In Process.GetProcesses()
If pcur.Id <> p.Id Then
If pcur.ProcessName.ToUpper().Equals(p.ProcessName.ToUpper()) Then
If pcur.SessionId.ToString().ToUpper().Equals(p.SessionId.ToString().ToUpper()) Then
Return False
End If
End If
End If
Next
Return True
End Function
poi nella form principale nell'evento Load scrivi
if "nomeFormPrincipale".PrevInstance() = false
me.close()
end if
Cristian Barca
drigo83
Profilo
| Senior Member
205
messaggi | Data Invio:
ven 4 dic 2009 - 10:52
Mi dice che SessionId non è un membro di System.Diagnostic.Process
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
ven 4 dic 2009 - 10:59
Ciao,
per applicazione intendi un processo generico o proprio l'applicazione VB che stai sviluppando ?
My Blog...
http://blogs.dotnethell.it/Mark/
drigo83
Profilo
| Senior Member
205
messaggi | Data Invio:
ven 4 dic 2009 - 11:00
L'applicazione che sto sviluppando
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
ven 4 dic 2009 - 11:02
1215_WindowsApplication19.zip
Ciao. Ti ho allegato un esempio. Compilalo e poi vai nella cartella bin\debug avvia l'exe e poi tenta di avviarne un altro e ti dirà che già è in uso.
Cristian Barca
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
ven 4 dic 2009 - 11:03
Tra le proprietà del progetto seleziona il flag RENDI A ISTANZA SINGOLA.
Et voilà
CIAO !
My Blog...
http://blogs.dotnethell.it/Mark/
Torna su
Stanze Forum
Elenco Threads
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 !