|
|
|
|
|
Dicas
|
|
Visual Basic.Net (Windows)
|
|
|
Título da Dica: Impedir que 2 cópias da aplicação sejam executadas
|
|
|
|
Postada em 6/10/2003 por ~Ð@®£@Ñ
No VB 6 utilizamos a instrução APP.PrevInstance para sabermos se já havia uma cópia da aplicação sendo executada e desta forma impediamos que um usuário executasse a mesma aplicação duas vezes ao mesmo tempo.
No VB.NET não temos o objeto APP. Para sabermos se existe ou não uma outra cópia da aplicação rodando temos que fazer uso do objeto Process (Processo - cada aplicação é um processo).
Veja um exemplo :
Dim procs() As Process = Process.GetProcessesByName("MinhaApp") If procs.Length > 1 Then MsgBox("Saindo...") Me.Close() End If
Uma forma de tornar essa rotina um pouco mais genérica é obter o nome do processo da nossa aplicação dinamicamente, veja :
Dim procs() As Process = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName) If procs.Length > 1 Then MsgBox("Saindo...") Me.Close() End If
Porém essa rotina só funcionará para processos que tenham nomes pequenos. Não funcionará caso o nome do processo tenha mais de 15 letras, por causa de uma limitação do ProcessName.
Para contornar esse problema, podemos ao invés de obter o processName obter o nome do arquivo executável e excluir a extensão. Veja um exemplo de uma função para isso :
Function AppIsAlreadyRunning() As Boolean
Dim moduleName As String = Process.GetCurrentProcess.MainModule.ModuleName
Dim procName As String = System.IO.Path.GetFileNameWithoutExtension _ (moduleName)
If Process.GetProcessesByName(procName).Length > 1 Then Return True End If End Function
|
|
|
|
|