API - usando semaforos

Top  Previous  Next

program Project1;

 

uses

  Windows,

  Forms,

  Unit1 in 'Unit1.pas' {Form1};

 

{$R *.res}

var

   hdlAplicacao: THandle;

begin

 

  // Ligar o sinal "vermelho" para indicar

  // que já está rodando

  CreateSemaphore(nil, 11'Project1 - Nome do Semáforo tem que ser único.');

 

  // Se o sinal já estava "vermelho"

  if GetLastError = ERROR_ALREADY_EXISTS then

    // Então ativar a janela original e terminar

    begin

      hdlAplicacao := FindWindow(nil, 'Form1');

      if not isWindowVisible(hdlAplicacao) then ShowWindow(hdlAplicacao, SW_RESTORE);

      SetForegroundWindow(hdlAplicacao);

    end

  else

    begin

      Application.Initialize;

      Application.CreateForm(TForm1, Form1);

      Application.Run;

    end;

end.