Einzelnen Beitrag anzeigen

Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#12

Re: Prüfen, ob eine Anwendung läuft

  Alt 28. Jan 2005, 22:02
Moin,

so hab den Rat des Kollegen befolgt und diese Routine "geklaut":

Delphi-Quellcode:
const
  MyGUID = 'hex-Zahl';
var
  Semaphore: THandle;
   ActivationMessage : integer;
var b_Ok : Boolean;

begin
  ActivationMessage := RegisterWindowMessage(PChar(MyGUID));
  Semaphore := CreateSemaphore(nil, 1, 1, PChar(MyGUID));
  if (GetLastError = ERROR_ALREADY_EXISTS) then
  begin
    ShowMessage('Manager läuft bereits'+#10#13+
                'und kann nicht mehrfach gestartet werden');
    CloseHandle(Semaphore);
    Exit;
  end;
  CloseHandle(Semaphore);
  progstart := true;
  Application.Initialize;
  Einstell := TEinstellungen.Create;
  Einstell.load;
  // LOginmaske erzeugen
  Frm_login := TFrm_login.Create(nil);
  // durch try finally sicherstellen das Form freigegeben wird
    try
      b_Ok := Frm_login.login;
    finally
      FreeAndNil(frm_Login);
    end;
    progstart := true;
    if (b_Ok) and (not sfirststart) then begin
      Application.Title := 'Manager';
      Application.CreateForm(TfrmMain, frmMain);
      Application.CreateForm(TfrmLizenzDaten, frmLizenzDaten);
      Application.CreateForm(TfrmZinsen, frmZinsen);
      Application.CreateForm(TPDF, PDF);
      Application.CreateForm(TfrmNetzwerk, frmNetzwerk);
      Application.CreateForm(Tprogramminfo, programminfo);
      Application.Run;
    end;
  freeandnil (einstell);
end.

Es tuet sich leider nix ... Ich kann nach wie vor mehrfach starten.


Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat