Artigos da Categoria 'Delphi'

(Listados por Data)

    Não permitir execução de mais de uma instância em Delphi

    Uma forma simples de não permitir que o usuário abra mais de uma instância do programa é usar o objeto de sincronização (mutex) para criar um identificador para seu processo, e verificá-lo na inicialização do aplicativo.

    No source da aplicação usa-se:

     
    uses
      windows
     
    var
      mAppMutexHnd: cardinal;
     
    const
     APPLICATION_MUTEX_ID = 'AplicativoMutex';
     
    begin
      Application.Initialize;
      // Cria o mutex para verificação
      mAppMutexHnd := CreateMutex(nil, BOOL(1), APPLICATION_MUTEX_ID);
      // Checa se a aplicação já está rodando
      if (mAppMutexHnd = 0) or (GetLastError <> 0) then
      begin
        MessageBox(0, 'Programa já em execução.', 'Aviso', MB_ICONHAND);
        Application.Terminate;
      end;
      try
        Application.Run;
      finally
        // Fecha a instância criada
        CloseHandle(mAppMutexHnd);
      end;
      Application.Terminate;
    Postado em 29/09/2011

    O servidor RPC não está disponível

    Hoje me deparei com esse erro chato na geração de alguns relatórios em Fortes Report (ainda uso sim!) usando Delphi. Na geração mostrava a mensagem de erro do sistema: “O servidor RPC não está disponível”. Depois de fuçar um pouco verifiquei que como não havia impressora instalada o serviço de spool do Windows estava desativado. Nos Serviços do Windows (Painel de Controle -> Ferramentas Administrativas - Serviços) procure por Spooler de Impressão e se estiver parado clique em Iniciar. Aqui funcionou.

    Postado em 15/09/2008