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/)
-   -   C++ Anwendung nur einmal starten (https://www.delphipraxis.net/213479-anwendung-nur-einmal-starten.html)

ruppi98 4. Aug 2023 12:34

AW: Anwendung nur einmal starten
 
Hallo Uwe,

danke für das Snippet. Werde es mal probieren, ob ich damit Erfolg habe.

Danke an alle die bisher geantwortet haben.

Wünsche ein schönes Wochenende.

Werde mich nächste Woche mal melden, ob ich Erfolg hatte.

Ruppi

Uwe Raabe 4. Aug 2023 13:36

AW: Anwendung nur einmal starten
 
Wichtig ist hier der Prefix "Global" damit der Mutex nicht auf die aktuelle Session beschränkt ist.

dummzeuch 4. Aug 2023 14:59

AW: Anwendung nur einmal starten
 
Zitat:

Zitat von Sherlock (Beitrag 1525278)
Dann wirst Du etwas anderes nutzen müssen, um Dein SingleInstance zu gewährleisten. Einfach ist da eine Semaphordatei zu setzen/löschen. Nicht trivial ist dann herauszufinden, ob die Datei da ist, weil gerade das Programm läuft, oder weil vergessen wurde sie zu löschen (Programmabsturz).

Kein Akt: Einfach die Datei beim Start exklusiv öffnen/erzeugen/überschreiben und sie offen halten bis zum Programmende. Wenn das Öffnen/Erzeugen fehlschlägt, läuft bereits eine andere Instanz.

himitsu 4. Aug 2023 19:29

AW: Anwendung nur einmal starten
 
Man muß aber aufpassen, wenn man auf gewissen Netzlaufwerken läuft.

himitsu 4. Aug 2023 19:31

AW: Anwendung nur einmal starten
 
Zitat:

Zitat von dummzeuch (Beitrag 1525296)
oder weil vergessen wurde sie zu löschen (Programmabsturz).

MSDN-Library durchsuchenCreateFile und FILE_ATTRIBUTE_TEMPORARY und/oder FILE_FLAG_DELETE_ON_CLOSE

ruppi98 16. Aug 2023 14:51

AW: Anwendung nur einmal starten
 
Hallo,

vielen Dank an alle, die sich an der Diskussion beteiligt haben.
War in zwischen auf Dienstreise, deshalb komme ich heute erst dazu mich zu bedanken.
Habe das "Problem" in zwischen durch Änderung im Aufgabentask lösen können.
Mit dem Mutex hatte ich leider keinen Erfolg. :wall:

Als noch mal vielen Dank an alle.

Ruppi

rabatscher 18. Aug 2023 11:28

AW: Anwendung nur einmal starten
 
In der JVCL (JvJCLUtils.pas) gibt es eine Helperfunktion:

"ActivatePrevInstance"

Sie aktiviert ein Fenster, falls es dieses schon mal gibt und gibt dann True zurück.

Wir benutzen das, um ein Programm nur einmal auszuführen und es dann zu aktivieren, falls
der Benutzer es nochmals starten will.

Ein Aufruf bei uns ist z.B.:

if ActivatePrevInstance(TfrmObserverMain.ClassName, '') then
Exit;


Das Funktioniert natürlich nur auf dem "aktuellen" Desktop und nicht über Session Grenzen hinaus! Ansonsten würde ich einen
globalen Mutex/Semaphore benutzen...

wobei TfrmObserverMain das Hauptfenster der Anwendung ist.


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

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