Fórum Como nao abrir um sistema mais de uma vez ? #193829
09/11/2003
0
Diante mao ja´ agradeco as ajudas...
Adonis
Curtir tópico
+ 0Post mais votado
09/11/2003
program Project1;
uses
Forms,
..
..
..
{$R *.RES}
var
Handle: THandle;
begin
Handle := FindWindow(´TFrmPrincipal´, nil);
if Handle <> 0 then { Já está aberto }
begin
Application.MessageBox(´Este programa já está aberto.´, ´Programa já aberto´, MB_OK);
Exit;
end;
Application.Initialize;
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TFrmConfirma, FrmConfirma);
Application.Run;
end.
Fabio.hc
Gostei + 1
Mais Posts
11/11/2003
Adonis
Esta e´ um dos exemplos que eu uso que nao da´ certo.
O meu esta´ assim:
{$R *.RES}
var
Hwnd: Thandle;
begin
Application.Title := ´Controle de Estoque´;
Application.HelpFile := ´´;
Hwnd := FindWindow(´FTelaPrin´,´TelaPrin´);
if Hwnd = 0 then begin
Application.Initialize;
FSplash := TFSplash.Create(application);
FSplash.Show;
FSplash.Update;
Application.CreateForm(TFTelaInic, FTelaInic);
Application.CreateForm(TFTelaPrin, FTelaPrin);
Application.CreateForm(TFSenha, FSenha);
Application.CreateForm(TDTabelas, DTabelas);
Application.Run;
end else begin
messagedlg(´O sistema já foi Inicializado!´,mtinformation,[mbok],0);
SetForegroundWindow(Hwnd);
end;
Ja´ tentei de tudo e nada. Mudo o TelaPrin para: FSenha, DTabelas, TelaInic, e nada. Use com ´nil´ como o seu exemplo e nada.
O meu sistema comeca com a TelaInic, que chama o Senha e depois para no TelaPrin. Observe que o Splash e´ carregado antes mesmo do TelaInic.
Agradeco alguma ajuda...
Gostei + 0
11/11/2003
Koplin
Dá uma olhada neste dpr:
program Project1;
uses//acrescente as q não tiverem no seu
Forms, SysUtils, Windows, Classes, Dialogs,
Unit1 in ´Unit1.pas´ ;
var aMutex:THandle;//crie esta var...
{$R *.res}
begin //aqui qqr identificação
amutex:=OpenMutex(MUTEX_ALL_ACCESS,False,´ABCDEF123´);
If aMutex = 0 then begin//aqui =acima
aMutex:=CreateMutex(nil,false,´ABCDEF123´);
//só avança se não houver outro aberto...
Application.Initialize;//trecho original
Application.CreateForm(TForm1, Form1);
Application.Run;
end else //acrescente...
ShowMessage(´Já estou no ar!´);
end.
Gostei + 0
11/11/2003
Valdir.santos
{$R *.res}
var Hwnd : THandle;
begin
Hwnd := FindWindow(´TApplication´, ´Sistema de Protocolo´);
if Hwnd = 0 then begin
Application.Initialize;
frmSplash := TFrmSplash.Create(Application);
frmSplash.Show;
frmSplash.Refresh;
Application.Title := ´Sistema de Protocolo´;
Application.CreateForm(TfrmPrincipal, frmPrincipal);
Application.Run;
SetForegroundWindow(Hwnd);
end
else begin
ShowMessage(´Programa já está sendo executado´);
SetForegroundWindow(Hwnd);
end;
end.
Gostei + 0
11/11/2003
Drix
Apenas coloque-o em seu form principal e configure. Ele exibe uma mensagem caso tente abrir o aplicativo mais de uma vez ou simplesmente ativa e coloca o mesmo em primeiro plano.
Tente localizar em: [url]www.superdownloads.com.br[/url].
Ate mais....
DRIx
Gostei + 0
11/11/2003
Beppe
Mesmo usando mutexes, será preciso chamar FindWindow para trazer o sistema para frente...
Ataliba
Gostei + 0
13/11/2003
Adonis
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)