![]() |
Programm nur 1x starten
Hi,
hab noch eine Frage: Wie kann ich verhindern, dass mein Delphi-Programm mehrmals gestartet wird? Beispiel: Das Programm DelphiProg wir kurz hintereinander mehrmals gestartet, dabei werden unterschiedliche Parameter übergeben: DelphiProg c:\temp\test1.txt DelphiProg c:\temp\test2.txt DelphiProg c:\temp\test3.txt Wie kann ich nun verhindern, das DelphiProg mehrmals gestartet wird. Und: Wie leite ich die anderen Parameter (c:\temp\test2.txt, c:\temp\test3.txt) auf das zuerst gestartete Programm um? Gibt es da überhaupt eine Lösung??? lg Thomas |
Hallöchen,
verhindern das Dein Programm nur einmal gestartet wird, kannst Du zum Bleistift hiermit:
Delphi-Quellcode:
Grüsse, Daniel :hi:
var
mHandle: THandle; implementation {$R *.dfm} //Code, Code, Code... //Prozeduren, Funktionen... Initialization //Verhindern, dass das Programm mehrmals gestartet wird mHandle := CreateMutex(nil, True, 'NameDerExe'); if GetLastError = ERROR_ALREADY_EXISTS then begin Halt; end; finalization if mHandle <> 0 then CloseHandle(mHandle); end. //Programmende |
Hallo Daniel,
danke für die prompte Antwort. Gibt es auch eine Möglichkeit die Parameter umzuleiten auf das bereits laufende Programm? lg Thomas |
Hallo Thomas,
ich verstehe Dein Problem nicht so richtig. Man kann doch mehrere Parameter "gleichzeitig" übergeben, also alle drei Dateien gleichzeitig. Das ist doch das was Du willst, oder? Grüsse, Daniel :hi: |
Hallo Daniel
Zitat:
Oder kann man in der Registry statt %1 einen anderen Platzhalter verwenden, der die Dateinamen als mehrere Parameter dem Programm übergibt, anstatt es mehrmals zu starten?? :pale: lg Thomas |
![]() |
Der Link funktioniert bei mir nicht. :(
Thomas |
Aber bei mir. Hab es mal angehängt!
Grüsse, Daniel :hi: |
Hab selbst einen anderen Link gefunden:
![]() Die Parameter werden aber auch damit nicht übergeben. Allerdings glaub ich zwischenzeitlich, dass ich das Problem entweder nur über Windows (Registry) oder über eine Datei lösen kann, in der ich einfach die Parameter hineinschreibe und vom laufenden Programm lesen lasse. lg Thomas |
Moin Zusammen,
für das Problem mit der einen Instanz hätten wir auch hier im Forum Lösungen: Einmal allgemein in der Code Library: ![]() und als etwas ausführlichere Diskussion hier: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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