![]() |
Re: Prüfen, ob eine Anwendung läuft
Ich glaub man braucht die Unit Windows, oder SysUtils, schau am besten in die Hilfe.
|
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 |
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.
|
Re: Prüfen, ob eine Anwendung läuft
|
Re: Prüfen, ob eine Anwendung läuft
Zitat:
|
Re: Prüfen, ob eine Anwendung läuft
Zitat:
:wall: :wall: :wall: :wall: :wall: klappt jetzt :wall: :wall: :wall: :wall: Danke !!!! Gruss EL |
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. |
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