Quer aprender Delphi for PHP?

Caros amigos delphianos, estão com dificuldades em encontrar um bom material sobre Delphi for PHP? Visite a Comunidade Delphi so PHP e veja algumas notícias sobre as novas tendências desta ferramenta. Lá você vai encontrar dicas, downloads, artigos, videos e muito mais sobre o Delphi for PHP. Para se cadastrar é muito simples, rápido e seguro. Clique aqui e seja o mais novo membro da Comunidade Delphi so PHP e bons estudos.

No mais até a próxima.


sábado, 4 de outubro de 2008

Como não deixar um programa executar mais de uma vez.

Evitar que um programa seja executado mais de uma vez
{ Muitos programas Windows permitem apenas uma cópia em
execução de cada vez. Isto é interessante principalmente
quando é um grande aplicativo, pois duas cópias ao mesmo
tempo usuaria muito mais memória. Em aplicativos
desenvolvidos em Delphi podemos ter esta característica.
Vejamos:

- Crie um novo projeto;
- Mude o "Name" do Form1 para DPGFormPrinc;
- Altere o código-fonte do arquivo Project1.dpr
conforme abaixo: }

program Project1;

uses
Forms, Windows,
Unit1 in 'Unit1.pas' {DPGFormPrinc};

{$R *.RES}

var
Handle: THandle;
begin
Handle := FindWindow('TDPGFormPrinc', nil);
if Handle <> 0 then begin { Já está aberto }
Application.MessageBox('Este programa já está aberto. A cópia ' +
'anterior será ativada.', 'Programa já aberto', MB_OK);
if not IsWindowVisible(Handle) then
ShowWindow(Handle, SW_RESTORE);
SetForegroundWindow(Handle);
Exit;
end;
Application.Initialize;
Application.CreateForm(TDPGFormPrinc, DPGFormPrinc);
Application.Run;
end.

Observações
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. Mas porque alterar o name do form principal para "DPGFormPrinc"? Este poderia ser
qualquer outro nome, mas preferi usar as iniciais do meu nome (DPG). Procurei deixar um nome bem
pessoal para não correr o risco de colocar um nome que possa ser encontrado em outro aplicativo do Windows.
Por exemplo: se deixar Form1, será bem fácil encontrar outro aplicativo feito em Delphi que possua uma
janela com este nome, o que causaria problema.

Um comentário:

Unknown disse...

Funcionou legal, mas pra isso tem que alterar o "Handle := FindWindow('TDPGFormPrinc',nil );" para "Handle := FindWindow(nil,'FrRitch' );".

valew

Parceria