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;
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.

