static void Main() { //Nao permite a execucao de mais de uma instancia do programa using (AppExecutionManager execMgr = new AppExecutionManager(D.AplicacaoNome)) { string lpszParentWindow = D.AplicacaoNome; if (execMgr.IsFirstInstance) { InitAppVariables(); Application.Run(D.FrmPrincipalRef); } else { //Deveria ter aqui apenas o BringWindowToTop(lpszParentWindow); entranto é necessário este workaround para consertar o //problema da janela hoje que não permitia o aplicativo aparecer na frente BringWindowToTop(lpszParentWindow); InitAppVariables(); Application.Run(D.FrmPrincipalRef); } } }
static void Main() { //Verificar se tem um neo pocket rodando using (AppExecutionManager execMgrNeoPocket = new AppExecutionManager("NeoPocket")) { string lpszParentWindowNeoPocket = "NeoPocket"; if (execMgrNeoPocket.IsFirstInstance) { //Nao tem neo pocket rodando, vou verificar se tem neo pocket updater using (AppExecutionManager execMgrNeoPocketUpdater = new AppExecutionManager("NeoPocketUpdater")) { string lpszParentWindowNeoPocketUpdater = "NeoPocketUpdater"; if (execMgrNeoPocket.IsFirstInstance) { // Nao tem NeoPocketUpdater rodando, vou chamar um novo updater InitAppVariables(); Application.Run(D.FrmPrincipalRef); } else { // Ja tinha, vou abrir o que estava rodando BringWindowToTop(lpszParentWindowNeoPocketUpdater); Application.Exit(); } } } else { // Chama o Neo pocket que estava em execucao BringWindowToTop(lpszParentWindowNeoPocket); //Mesmo que já tenha um em execução aguarda 3 segundos e tenta chamar outro, pois a tela "Hoje" causa um problema de não //permitir que o aplicativo fique na frente System.Threading.Thread.Sleep(3000); System.Diagnostics.Process.Start(D.AplicacaoDiretorio + "NeoPocket.exe", ""); Application.Exit(); } } }