Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        public static void Start()
        {
            NFe.Service.TFunctions.CriarArquivosParaServico();

            Empresas.CarregaConfiguracao();

            #region Ticket #110
            Empresas.CreateLockFile(true);
            #endregion

            //Executar o monitoramento de pastas das empresas cadastradas
            MonitoraPasta e = new MonitoraPasta();

            Threads.Clear();

            //Executa a thread que faz a limpeza dos arquivos temporários
            Thread t = new Thread(new Processar().LimpezaTemporario);
            t.IsBackground = true;
            t.Start();
            Threads.Add(t);

            //Executa a thread que faz a verificação das notas em processamento
            Thread t2 = new Thread(new Processar().EmProcessamento);
            t2.IsBackground = true;
            t2.Start();
            Threads.Add(t2);

            //Executar a thread que faz a consulta do recibo das notas fiscais enviadas
            Processar srv = new Processar();
            Thread    t3  = new Thread(srv.GerarXMLPedRec);
            t3.IsBackground = true;
            t3.Start(new NFe.Service.TaskNFeGerarXMLPedRec());
            Threads.Add(t3);
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        private void metroTile_excluir_Click(object sender, EventArgs e)
        {
            if (Empresas.Configuracoes == null || Empresas.Configuracoes.Count == 0)
            {
                return;
            }
            if (MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm,
                                                    "Exclui os arquivos de \".lock\" configurados para esta instância?\r\n" +
                                                    "Tem certeza que deseja continuar? ", "",
                                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {
                    Empresas.CreateLockFile(true);

                    MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, "Arquivos de \".lock\" excluídos com sucesso.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MetroFramework.MetroMessageBox.Show(uninfeDummy.mainForm, ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Ejemplo n.º 6
0
        /// <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);
        }