Olá leitor,
Abaixo coloco um pequeno projeto que impede duas instâncias do mesmo programa em C# serem abertas no mesmo computador. Caso o usuário tente abrir, a seguinte MessageBox será mostrada e a segunda instância será fechada.
O código é baseado no post "Verificar se processo está rodando com C#" e possui apenas um pequeno trecho adicional no método Main() da classe Program.cs que faz este trabalho. Ficou assim:
static void Main()
{
//Pega o nome do processo deste programa
string nomeProcesso = Process.GetCurrentProcess().ProcessName;
//Busca os processos com este nome que estão em execução
Process[] processos = Process.GetProcessesByName(nomeProcesso);
//Se já houver um aberto
if (processos.Length > 1)
{
//Mostra mensagem de erro e finaliza
MessageBox.Show("Não
é possível abrir duas instâncias deste programa.", "Erro", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
Application.Exit();
}
//Caso contrário continue normalmente
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Lembrando que para usar a classe Process você deve importar o System.Diagnostics no início do código.
O .exe compilado para o .NET Framework 4.0 do programa pode ser baixado no seguinte link: http://goo.gl/f93Qw
O projeto e código fonte completo do programa em C# criado com o VisualStudio2010 está em: http://goo.gl/myldp
Até a próxima!
conheci seu blog a alguns dias ... estudo c# a uns 3 meses curto muito a linguagem em si... e seu blog tem me ajudado muitas em duvidas ... espero que não pare com as postagens é de grande proveito vlw...
ResponderExcluirMuito obrigado. Que bom que estou ajudando seu início nos estudos. Boa sorte na sua jornada!
ExcluirBlog realmente demais!! dicas perfeitas!!
ResponderExcluirMuito bom cara! Ajudou bastante, continue com o bom trabalho! vlws!
ResponderExcluirShow de bola 100% funcional!!! E bem fácil de entender. Parabéns e muito obrigado.
ResponderExcluirTop parabens
ResponderExcluir