Fórum programa roda uma so vez #171555

26/07/2003

0

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.


Bigtama

Bigtama

Responder

Posts

28/07/2003

Glauberms

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


Responder

Gostei + 0

28/07/2003

Bigtama

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???


Responder

Gostei + 0

28/07/2003

Fórum Vini

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


Responder

Gostei + 0

28/07/2003

Bigtama

vlw, ajudo sim, vlw mesmo


Responder

Gostei + 0

28/07/2003

Bigtama

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´


Responder

Gostei + 0

29/07/2003

Bigtama

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´


Responder

Gostei + 0

29/07/2003

Voruss

use o componente JustOne, muito bom.
manda seu e-mail que eu te envio o componente.


Responder

Gostei + 0

30/07/2003

Bigtama

hanimecenter@bol.com.br


Responder

Gostei + 0

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

Aceitar