/// <summary> /// Verifica se a aplicação já está executando ou não /// </summary> /// <returns>True=Aplicação está executando</returns> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 21/07/2011 /// </remarks> public static Boolean AppExecutando() { bool executando = false; Empresas.CarregaConfiguracao(); try { Empresas.CanRun(null); // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock, // pois podem ter sofridos alterações de configurações nas pastas Empresas.CreateLockFile(); string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName; if (System.Diagnostics.Process.GetProcessesByName(procName).Length > 1) { executando = true; } } catch (NFe.Components.Exceptions.AppJaExecutando ex) { Empresas.ExisteErroDiretorio = true; Empresas.ErroCaminhoDiretorio = ex.Message; executando = true; } catch { } return(executando); }
/// <summary> /// Verifica se a aplicação já está executando ou não /// </summary> /// <returns>True=Aplicação está executando</returns> public static Boolean UniNFeSevicoAppExecutando() { Propriedade.ExecutandoPeloUniNFe = false; //Executado pelo UniNfeServico try { Empresas.CarregaConfiguracao(); Empresas.CanRun(null); // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock, // pois podem ter sofridos alterações de configurações nas pastas Empresas.CreateLockFile(); } catch (NFe.Components.Exceptions.AppJaExecutando ex) { Auxiliar.WriteLog(ex.Message, false); return(true); } catch (NFe.Components.Exceptions.ProblemaExecucaoUniNFe ex) { Auxiliar.WriteLog(ex.Message, false); } catch { //Não preciso retornar nada, somente evito fechar o aplicativo //Esta exceção pode ocorrer quando não existe nenhuma empresa cadastrada //ainda, ou seja, é a primeira vez que estamos entrando no aplicativo } return(false); }
/// <summary> /// Verifica se a aplicação já está executando ou não /// </summary> /// <returns>True=Aplicação está executando</returns> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 21/07/2011 /// </remarks> public static Boolean AppExecutando(bool silencioso, bool novoSistema = false) { bool executando = false; Empresas.CarregaConfiguracao(); #region Ticket: #110 /* * Marcelo * 03/06/2013 */ /// /// verifica se o UniNFe está sendo executado pelo servico /// if (!Propriedade.ServicoRodando) { string podeExecutar = Empresas.CanRun(!novoSistema); if (!String.IsNullOrEmpty(podeExecutar)) { return(true); } // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock, // pois podem ter sofridos alterações de configurações nas pastas Empresas.CreateLockFile(); } #endregion string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName; if (System.Diagnostics.Process.GetProcessesByName(procName).Length > 1) { executando = true; } if (!silencioso && !novoSistema) { if (executando) { MessageBox.Show("Somente uma instância do " + Propriedade.NomeAplicacao + " pode ser executada.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (Empresas.ExisteErroDiretorio) { System.Windows.Forms.MessageBox.Show("Ocorreu um erro ao efetuar a leitura das configurações da empresa. " + "Por favor entre na tela de configurações da(s) empresa(s) listada(s) abaixo na aba \"Pastas\" e reconfigure-as.\r\n\r\n" + Empresas.ErroCaminhoDiretorio, "Atenção", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); } } return(executando); }
/// <summary> /// Verifica se a aplicação já está executando ou não /// </summary> /// <param name="oOneMutex">Objeto do tipo Mutex para ter como retorno para conseguir encerrar o mutex na finalização do aplicativo</param> /// <returns>True=Aplicação está executando</returns> /// <date>31/07/2009</date> /// <by>Wandrey Mundin Ferreira</by> public static Boolean AppExecutando(bool chamadaPeloUniNFe, ref System.Threading.Mutex oOneMutex) { Propriedade.ExecutandoPeloUniNFe = chamadaPeloUniNFe; bool executando = false; String nomePastaEnvio = ""; String nomePastaEnvioDemo = ""; try { Empresas.CarregaConfiguracao(); #region Ticket: #110 /* * Marcelo * 03/06/2013 */ string podeExecutar = Empresas.CanRun(); if (!String.IsNullOrEmpty(podeExecutar)) { return(true); } // Se puder executar a aplicação aqui será recriado todos os arquivos de .lock, // pois podem ter sofridos alterações de configurações nas pastas Empresas.CreateLockFile(); #endregion //danasa 22/7/2011 //se chamadaPeloUniNFe=false, é porque está sendo executado pelo servico //se chamadaPeloUniNFe=true, é porque está sendo executado pelo 'uninfe.exe' if (chamadaPeloUniNFe) { Empresa oEmpresa = null; if (Empresas.Configuracoes.Count > 0) { oEmpresa = Empresas.Configuracoes[0]; //Pegar a pasta de envio, se já tiver algum UniNFe configurado para uma determinada pasta de envio os demais não podem if (oEmpresa.PastaXmlEnvio != "") { nomePastaEnvio = oEmpresa.PastaXmlEnvio; //Tirar a unidade e os dois pontos do nome da pasta int iPos = nomePastaEnvio.IndexOf(':') + 1; if (iPos >= 0) { nomePastaEnvio = nomePastaEnvio.Substring(iPos, nomePastaEnvio.Length - iPos); } nomePastaEnvioDemo = nomePastaEnvio; //tirar as barras de separação de pastas e subpastas nomePastaEnvio = nomePastaEnvio.Replace("\\", "").Replace("/", "").ToUpper(); } } // Verificar se o aplicativo já está rodando. Se estiver vai emitir um aviso e abortar // Pois só pode executar o aplicativo uma única vez para cada pasta de envio. // Wandrey 27/11/2008 System.Threading.Mutex oneMutex = null; String nomeMutex = Propriedade.NomeAplicacao.ToUpper() + nomePastaEnvio.Trim(); try { oneMutex = System.Threading.Mutex.OpenExisting(nomeMutex); } catch (System.Threading.WaitHandleCannotBeOpenedException) { } if (oneMutex == null) { oneMutex = new System.Threading.Mutex(false, nomeMutex); oOneMutex = oneMutex; executando = false; } else { oneMutex.Close(); executando = true; } } } catch { //Não preciso retornar nada, somente evito fechar o aplicativo //Esta exceção pode ocorrer quando não existe nenhuma empresa cadastrada //ainda, ou seja, é a primeira vez que estamos entrando no aplicativo } if (executando && chamadaPeloUniNFe)//danasa 22/7/2011 { MessageBox.Show("Somente uma instância do " + Propriedade.NomeAplicacao + " pode ser executada com a seguinte pasta de envio configurada: \r\n\r\n" + "Pasta Envio: " + nomePastaEnvioDemo + "\r\n\r\n" + "Já existe uma instância em execução.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning); } return(executando); }