programa roda uma so vez
Ae, como eu faço para o meu programa roda uma so vez???
tipo ele fica na bandeja (do lado do relogio), então se ele for mandado executar dinovo eu quero que ele abra, no caso saia do hide para show.
tipo ele fica na bandeja (do lado do relogio), então se ele for mandado executar dinovo eu quero que ele abra, no caso saia do hide para show.
Bigtama
Curtidas 0
Respostas
Glauberms
26/07/2003
Altere o código-fonte do arquivo Project1.dpr conforme abaixo:
[i:c92dfe06dc]program Project1;
uses
Forms, Windows,
Unit1 in ´Unit1.pas´ ;
{$R *.RES}
var
Handle: THandle;
begin
Handle := FindWindow(´Form1´, nil);
if Handle <> 0 then
begin { Já está aberto }
Application.MessageBox(´Este programa já está aberto.´ , ´Programa já aberto´, MB_OK);
if not IsWindowVisible(Handle) then
ShowWindow(Handle, SW_RESTORE);
SetForegroundWindow(Handle);
Exit;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.[/i:c92dfe06dc]
[b:c92dfe06dc]Importante:
Verifique se o nome ([i:c92dfe06dc]NAME[/i:c92dfe06dc]) do formulário principal de sua aplicação é Form1 se não o substitua no código assima.
Para testar este programa você deverá compilar o projeto e fechar o Delphi. Depois, procure o Project1.exe (projeto compilado) usando o Windows Explorer e tente executá-lo mais de uma vez e veja o que acontece.[/b:c92dfe06dc]
Espero que seja suficiente...
[i:c92dfe06dc]program Project1;
uses
Forms, Windows,
Unit1 in ´Unit1.pas´ ;
{$R *.RES}
var
Handle: THandle;
begin
Handle := FindWindow(´Form1´, nil);
if Handle <> 0 then
begin { Já está aberto }
Application.MessageBox(´Este programa já está aberto.´ , ´Programa já aberto´, MB_OK);
if not IsWindowVisible(Handle) then
ShowWindow(Handle, SW_RESTORE);
SetForegroundWindow(Handle);
Exit;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.[/i:c92dfe06dc]
[b:c92dfe06dc]Importante:
Verifique se o nome ([i:c92dfe06dc]NAME[/i:c92dfe06dc]) do formulário principal de sua aplicação é Form1 se não o substitua no código assima.
Para testar este programa você deverá compilar o projeto e fechar o Delphi. Depois, procure o Project1.exe (projeto compilado) usando o Windows Explorer e tente executá-lo mais de uma vez e veja o que acontece.[/b:c92dfe06dc]
Espero que seja suficiente...
GOSTEI 0
Bigtama
26/07/2003
vlw cara, mas tipo, eu queria algo que fizesse ele abri uma unica vez, e se eu tentase denovo ele iria ver se o Form1 estivese em modo show,dai se tivesse ele simplismente iria mostra na tela, se ele estivese em modo hide ele iria colocar modo show.
vc saberia como fazer isso???
vc saberia como fazer isso???
GOSTEI 0
Fórum Vini
26/07/2003
vlw cara, mas tipo, eu queria algo que fizesse ele abri uma unica vez, e se eu tentase denovo ele iria ver se o Form1 estivese em modo show,dai se tivesse ele simplismente iria mostra na tela, se ele estivese em modo hide ele iria colocar modo show.
vc saberia como fazer isso???
eh mais fácil ainda...
program Project1;
uses
Forms, Windows,
Unit1 in ´Unit1.pas´ ;
{$R *.RES}
var
Handle: THandle;
begin
Handle := FindWindow(´Form1´, nil);
if Handle <> 0 then
begin { Já está aberto }
//Application.MessageBox(´Este programa já está aberto.´ , ´Programa já aberto´, MB_OK); //é só tirar essa linha
if not IsWindowVisible(Handle) then
ShowWindow(Handle, SW_RESTORE);
SetForegroundWindow(Handle);
Exit;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Para colocar o ícone no tray, de uma olhada aqui no clube que tem um artigo ou dica falando sobre isso...
Espero ter ajudado.
Vinicius
GOSTEI 0
Bigtama
26/07/2003
vlw, ajudo sim, vlw mesmo
GOSTEI 0
Bigtama
26/07/2003
ae deu os seguintes erros:
[Error] Tsuki.dpr(20): Undeclared identifier: ´FindWindow´
[Error] Tsuki.dpr(23): Undeclared identifier: ´IsWindowVisible´
[Error] Tsuki.dpr(24): Undeclared identifier: ´ShowWindow´
[Error] Tsuki.dpr(24): Undeclared identifier: ´SW_RESTORE´
[Error] Tsuki.dpr(25): Undeclared identifier: ´SetForegroundWindow´
[Error] Tsuki.dpr(20): Undeclared identifier: ´FindWindow´
[Error] Tsuki.dpr(23): Undeclared identifier: ´IsWindowVisible´
[Error] Tsuki.dpr(24): Undeclared identifier: ´ShowWindow´
[Error] Tsuki.dpr(24): Undeclared identifier: ´SW_RESTORE´
[Error] Tsuki.dpr(25): Undeclared identifier: ´SetForegroundWindow´
GOSTEI 0
Bigtama
26/07/2003
ae deu os seguintes erros:
[Error] Tsuki.dpr(20): Undeclared identifier: ´FindWindow´
[Error] Tsuki.dpr(23): Undeclared identifier: ´IsWindowVisible´
[Error] Tsuki.dpr(24): Undeclared identifier: ´ShowWindow´
[Error] Tsuki.dpr(24): Undeclared identifier: ´SW_RESTORE´
[Error] Tsuki.dpr(25): Undeclared identifier: ´SetForegroundWindow´
[Error] Tsuki.dpr(20): Undeclared identifier: ´FindWindow´
[Error] Tsuki.dpr(23): Undeclared identifier: ´IsWindowVisible´
[Error] Tsuki.dpr(24): Undeclared identifier: ´ShowWindow´
[Error] Tsuki.dpr(24): Undeclared identifier: ´SW_RESTORE´
[Error] Tsuki.dpr(25): Undeclared identifier: ´SetForegroundWindow´
GOSTEI 0
Voruss
26/07/2003
use o componente JustOne, muito bom.
manda seu e-mail que eu te envio o componente.
manda seu e-mail que eu te envio o componente.
GOSTEI 0
Bigtama
26/07/2003
hanimecenter@bol.com.br
GOSTEI 0