![]() |
Verhindern eine Anwendung mehrfach zu starten
Hallo zusammen,
ich habe versucht mein Programm kein weiteres Mal aufrufen zu lassen, wenn es bereits einmal im System geöffnet ist. Das habe ich folgendermaßen probiert:
Delphi-Quellcode:
aber leider funktioniert das bei der Anwendung nicht. Bei einer anderen schon. :gruebel:
doppelt := FindWindow('TApplication', PChar('meinProgramm'));
if doppelt <> 0 then begin if IsIconic(doppelt) then ShowWindow(doppelt, SW_RESTORE) else SetForegroundWindow(doppelt); end else begin // Programmstart end; Hoffe ihr könnt mir da weiterhelfen. Gruß, Moony |
Re: Verhindern eine Anwendung mehrfach zu starten
Na dann suchen wir doch einfach mal:
![]() |
Re: Verhindern eine Anwendung mehrfach zu starten
Wird das Fenster gefunden, resp ist doppelt <> 0 ?
|
Re: Verhindern eine Anwendung mehrfach zu starten
Hi,
ich hoffe mal du hast nicht einfach ohne zu überlegen nen Quelltext per Copy&Paste übernommen? Falls doch: Check mal, ob dein Application.Title wirklich 'meinProgramm' ist. Bei mir funktioniert der Code. Mfg FAlter |
Re: Verhindern eine Anwendung mehrfach zu starten
|
Re: Verhindern eine Anwendung mehrfach zu starten
@ toms:
doppelt ist immer <> 0. Egal ob die Anwendung bereits geöffnet ist oder nicht. @FAlter: Natürlich NICHT. Da steht der Title statisch drin, wie er bei den Optionen unter Application.Title angegeben ist. @fuknersascha: schaue ich mir eben an und probiere das aus. |
Re: Verhindern eine Anwendung mehrfach zu starten
Hi,
Zitat:
Mfg FAlter |
Re: Verhindern eine Anwendung mehrfach zu starten
Die Zeilen stehen in der *.dpr.
So, habe jetzt den Code con Luckie probiert und wenn ich die Anwendung zum zweiten Mal aufrufe, bekomme ich eine Exception. Ich habe jedoch diesen Code nicht als separate Unit angebunden, sondern meinen alten Source in der *.dpr ersetzt. |
Re: Verhindern eine Anwendung mehrfach zu starten
Hi,
Zitat:
Delphi-Quellcode:
Ich persönlich würde die Komponente aus der CodeLib nehmen, da steht was von Parameterübergabe dabei ;)
program Project1;
uses Windows, Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} var Doppelt: THandle; begin //Sicherstellen, dass zweiter Parameter Application.Title entspricht! //Delphi ärgert bei Verwendung einer Konstante. doppelt := FindWindow('TApplication', 'Test'); if doppelt <> 0 then begin if IsIconic(doppelt) then ShowWindow(doppelt, SW_RESTORE) else SetForegroundWindow(doppelt); end else begin Application.Initialize; Application.Title := 'Test'; Application.CreateForm(TForm1, Form1); Application.Run; end; end. Mfg FAlter |
Re: Verhindern eine Anwendung mehrfach zu starten
Noch mal: JA, es steht an der richtigen Stelle!!!!
In meinem anderen Programm funktioniert das ja. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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-2025 by Thomas Breitkreuz