Verificar se o Programa já está aberto

10/04/2006

Como verificar se o Meu programa já está aberto?
Para ñ abri-lo novamente???


Cabal

Respostas

10/04/2006

Rjun

Pesquise no fórum por [b:3f861cb641]MUTEX[/b:3f861cb641].


Responder Citar

10/04/2006

Marco Salles

citacao de Rjun
Pesquise no fórum por MUTEX.

no minimo ele vai encontar uma dez mensagens assim :

[quote:d6b0aecc6e][quote:d6b0aecc6e]citacao de Rjun
Pesquise no fórum por MUTEX.
[/quote:d6b0aecc6e]

[quote:d6b0aecc6e]citacao de Rjun
Pesquise no fórum por MUTEX.
[/quote:d6b0aecc6e]

.......

[quote:d6b0aecc6e]citacao de Rjun
Pesquise no fórum por MUTEX.
[/quote:d6b0aecc6e][/quote:d6b0aecc6e]

[b:d6b0aecc6e]brincadeirarinha em los ermanos[/b:d6b0aecc6e]


Responder Citar

10/04/2006

Paulocesar1301

Você pode usar um FindWindow da vida ou:

Uses
  TlHelp32;

function PrgRodando(Executavel: WideString): Boolean; Export; StdCall;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := False;
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(Executavel)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(Executavel))) then
    begin
      Result := True;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;



Responder Citar

10/04/2006

Martins

Coloque o código abaixo no seu [b:7f5d5c4d53]DPR[/b:7f5d5c4d53].

var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow (´TPrograma´, ´Programa´);
  if Hwnd = 0 then
  begin
    Application.Initialize;
    Application.CreateForm(TPrograma, Programa);
    Application.Run;
  end
  else
  begin
    MessageDlg (´Já existe uma instãncia deste programa, verifique por favor!!´,mtinformation,[mbok&93;, 0);
    SetForegroundWindow (Hwnd);
  end;
end.



Responder Citar

10/04/2006

Adriano Santos

Coloque o código abaixo no seu [b:6b44c5fe7a]DPR[/b:6b44c5fe7a].
var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow (´TPrograma´, ´Programa´);
  if Hwnd = 0 then
  begin
    Application.Initialize;
    Application.CreateForm(TPrograma, Programa);
    Application.Run;
  end
  else
  begin
    MessageDlg (´Já existe uma instãncia deste programa, verifique por favor!!´,mtinformation,[mbok&93;, 0);
    SetForegroundWindow (Hwnd);
  end;
end.


Ae [b:6b44c5fe7a]Martins[/b:6b44c5fe7a], boa. Este realmente é o método mais usado.


Responder Citar