ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Verificar se o programa se encontra aberto.RESOLVIDO

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
juninhoted
Aprendiz
Aprendiz


Registrado: Domingo, 1 de Outubro de 2006
Mensagens: 139

MensagemEnviada: Ter Ago 23, 2011 9:29 am    Assunto: Verificar se o programa se encontra aberto.RESOLVIDO Responder com Citação

Tenho um sistema na empresa feito em Delphi 7 e gostaria que fosse permitido abri-lo somente uma instancia por máquina, ou seja. se o usuário clicar no exe do programa ele irá abrir, e se clicar novamente verificar se ele ja se encontra aberta e informar que ele ja se enconta em execução.

Alguém pode me ajudar?


Editado pela última vez por juninhoted em Qui Ago 25, 2011 8:22 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Ter Ago 23, 2011 1:07 pm    Assunto: Responder com Citação

Gosto muito de Mutex . Procure por
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
CesarRocha
Mestre
Mestre


Registrado: Segunda-Feira, 30 de Mai de 2011
Mensagens: 794
Localização: São Paulo - SP

MensagemEnviada: Ter Ago 23, 2011 2:15 pm    Assunto: Re: Verificar se o programa se encontra aberto. Responder com Citação

juninhoted escreveu:
Tenho um sistema na empresa feito em Delphi 7 e gostaria que fosse permitido abri-lo somente uma instancia por máquina, ou seja. se o usuário clicar no exe do programa ele irá abrir, e se clicar novamente verificar se ele ja se encontra aberta e informar que ele ja se enconta em execução.

Alguém pode me ajudar?


Uma das formas de fazer isso:

Declarar a função:

Código:
function fSys_AppIsRunning( ActivateIt:boolean ) : Boolean;


Código:
// Testa se a sua aplicacao já esta sendo executada.
function TForm1.fSys_AppIsRunning( ActivateIt:boolean ) : Boolean;
var
  hSem : THandle;
  hWndMe : HWnd;
  AppTitle: string;
begin
  Result := False;
  AppTitle := Application.Title;
  hSem := CreateSemaphore(nil, 0, 1, pChar(AppTitle) );
  if ((hSem <> 0) AND (GetLastError() = ERROR_ALREADY_EXISTS)) then
     begin
       CloseHandle(hSem);
       Result := True;
     end;
  if Result and ActivateIt then
     begin
       Application.Title :=  'zzzzzzz';
       hWndMe := FindWindow(nil, pChar(AppTitle));
       if (hWndMe <> 0) then
          begin
            if IsIconic(hWndMe) then
               ShowWindow(hWndMe, SW_SHOWNORMAL)
            else
               SetForegroundWindow(hWndMe);
          end;
     end;
end;


Modo de usar:

Código:
procedure TForm1.FormCreate(Sender: TObject);
begin
  // CONTROLE DE RECARGA DA APLICAÇÃO.
  if fSys_AppIsRunning(true) then
     Application.Terminate;
end;


Espero que seja útil.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB