Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prüfen, ob eine Anwendung läuft (https://www.delphipraxis.net/39077-pruefen-ob-eine-anwendung-laeuft.html)

DelphiFreund 28. Jan 2005 21:50

Re: Prüfen, ob eine Anwendung läuft
 
Ich glaub man braucht die Unit Windows, oder SysUtils, schau am besten in die Hilfe.

emsländer 28. Jan 2005 22:02

Re: Prüfen, ob eine Anwendung läuft
 
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

Armageddon 28. Jan 2005 22:07

Re: Prüfen, ob eine Anwendung läuft
 
Vielleicht kannst Du ja was mit den LMD-TOOLS SE anfangen. Da hab ich was schönes gefunden das ich immer verwende. Ist einfach und funktioniert. Heisst glaub OneInstance oder so. Echt easy.

kiar 28. Jan 2005 22:10

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

schau mal hier http://www.luckie-online.de/Delphi/Importe/Nico/

raik

Sprint 28. Jan 2005 22:14

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

Zitat von emsländer
Ich kann nach wie vor mehrfach starten.

Ist ja auch kein wunder. CloseHandle erst aufrufen, wenn das Programm wieder beendet wird.

emsländer 28. Jan 2005 22:18

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

Zitat von Sprint
Zitat:

Zitat von emsländer
Ich kann nach wie vor mehrfach starten.

Ist ja auch kein wunder. CloseHandle erst aufrufen, wenn das Programm wieder beendet wird.


:wall: :wall: :wall: :wall: :wall: klappt jetzt :wall: :wall: :wall: :wall:

Danke !!!!




Gruss

EL

Sprint 28. Jan 2005 22:21

Re: Prüfen, ob eine Anwendung läuft
 
Wenn die bereits laufende Anwendung nicht informiert werden soll, das der Benutzer versucht das Programm mehr als einmal zu starten, dann reicht es auch, wenn du es so schreibst:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  AppHandle: THandle;

initialization
  AppHandle := CreateSemaphore(nil, 0, 1, '{FCAE1E10-4533-4A5B-9710-05BF647B6A1C}');
  if GetLastError = ERROR_ALREADY_EXISTS then
    Halt(0);

finalization
  if AppHandle <> 0 then
    CloseHandle(AppHandle);

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz