Fórum Não Abrir o mesmo executavel #283044

26/05/2005

0

Ola Pessoal alguem poderia me ajudar com algum exemplo que não permita que se abra o mesmo programa no mesmo computador ? ou seja não abrir o mesmo .exe. Valeu


Luisjunior

Luisjunior

Responder

Posts

27/05/2005

Steve_narancic

utilize a Função [b:9eb7946be2]FindWindow[/b:9eb7946be2]


Responder

Gostei + 0

27/05/2005

Facc

utilize a Função [b:ee4d8dea39]FindWindow[/b:ee4d8dea39]


Como eu uso essa função?


Responder

Gostei + 0

27/05/2005

Steve_narancic

No código do Projeto coloque:

 
  if FindWindow(Nil,´Nome do Programa´) = 0 
  then
  begin
  //Executa
  end
  else
    MessageDlg(´O Sistema já está (ou ainda está) sendo Executado. Verifique !!!´, mtInformation, [mbOK], 0);



Responder

Gostei + 0

27/05/2005

Vagner.oliveira

não entendi :shock:

em qual momento do programa ?
tenho outra dúvida uso um form_splash, como posso usá-lo ?


Responder

Gostei + 0

27/05/2005

Marco Salles

Opção muito boa<

[b:b4bac00295]Create Mutex[/b:b4bac00295]

Inclua no seu Arquivo Dpr Principal a Segunte Instrução :

  CreateMutex(nil, True, ´XyZzWw´); 
  if GetLastError = ERROR_ALREADY_EXISTS then 
    Exit; 


exemplo:

program NomeDoProgrma; 

uses 
  Principal in ´Principal.pas´ , 
  

  { Mais alguns formulários... } 

  Login in ´..\comum\Login.pas´ ; 

{$R *.RES} 

begin 
  CreateMutex(nil, True, ´XyZzWw´); 
  if GetLastError = ERROR_ALREADY_EXISTS then 
    Exit; 
//  bla bla bal.... 
  Application.Run; 
end.



Responder

Gostei + 0

27/05/2005

Vagner.oliveira

informa que não foi declarada as variáveis:

[b:d23d63d316]CreateMutex[/b:d23d63d316]
nem a
[b:d23d63d316]ERROR_ALREADY_EXISTS[/b:d23d63d316]


Responder

Gostei + 0

27/05/2005

Vetorzero

Este é o ´dpr´ de um de meus programas... e é assim que funciona... não permite que o programa seja aberto duas vezes em uma mesma máquina... veja o que falta para implentar seu programa e utilize.

É isto.

Augusto Vieira

program Sobenca;

uses
  Forms,
  Windows,
  fMenu in ´fMenu.pas´ ,
  fCadastro in ´fCadastro.pas´ ,
  fAssociados in ´fAssociados.pas´ ,
  fCritica in ´fCritica.pas´ ,
  fBoletasR in ´fBoletasR.pas´ ,
  fBoletasOpte in ´fBoletasOpte.pas´ ;

{$R *.RES}

var SpSenha : TF_Senha;
    Handle : THandle;

begin
  Handle := CreateMutex(nil,True,´TF_Menu´);
  if GetLastError = ERROR_ALREADY_EXISTS then begin
     Application.MessageBox(´Este programa já está aberto !´, ´Atenção !´, mb_Ok);
     if not IsWindowVisible(Handle) then begin
        ShowWindow(Handle, SW_RESTORE);
        SetForegroundWindow(Handle);
     end;
     if Handle <> 0 then CloseHandle(Handle);
        exit;
  end;
  Application.Initialize;
  SpSenha := TF_Senha.Create(Application);
  Application.Title := ´Sobenca´;
  Application.CreateForm(TF_Menu, F_Menu);
  Application.CreateForm(TF_Importa, F_Importa);
  Application.CreateForm(TF_Senha, F_Senha);
  Application.CreateForm(TF_Rotinas, F_Rotinas);
  Application.CreateForm(TF_Exporta, F_Exporta);
  Application.CreateForm(TF_Critica, F_Critica);
  SpSenha.ShowModal;
  SpSenha.Close;
  SpSenha.Free;

  Application.Run;
end.



Responder

Gostei + 0

27/05/2005

Marco Salles

Desculpe amigo , eu esqueci de mencionar que é necessario declarar na secção usse do seu Arquivo Dpr as Units Forms, Windows, Dialogs

Assim corrija:

program NomeDoProgrma; 

uses
  Forms,   // Inclua *************
   Windows,  // Inclua *************
   Dialogs      // Inclua *************
  Principal in ´Principal.pas´ , 
  

  { Mais alguns formulários... } 

  Login in ´..\comum\Login.pas´ ; 

{$R *.RES} 

begin 
  CreateMutex(nil, True, ´XyZzWw´); 
  if GetLastError = ERROR_ALREADY_EXISTS then 
    Exit; 
//  bla bla bal.... 
  Application.Run; 
end.



Responder

Gostei + 0

14/06/2005

Aurino003

Essa dica é muito boa! :D

Funciona perfeitamente.

Obrigado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar