Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mehrere Instanzen auf einmal schließen (https://www.delphipraxis.net/190423-mehrere-instanzen-auf-einmal-schliessen.html)

ramboni 2. Okt 2016 18:10

Mehrere Instanzen auf einmal schließen
 
Hallo zusammen,

ich bastel gerade an einem kleinen Projekt bei dem ich ca. 10 - 20 Instanzen meines Programmes
öffnen kann (nicht muss), nun wollte ich das schließen für den User etwas einfacher gestalten
(da vor dem schließen noch abschließende Arbeiten getan werden müssen (vom Programm)) und einen Button "Alle schließen" erstellen.

Nur .... naja... wie kann ich das am Besten machen? Erste Überlegungen gingen in Richtung:
- Programm guckt alle x Sekunden ob eine bestimmte Datei existiert, wenn ja schließ dich....

Aber schön ists so ja nicht :( Ideen?

Benedikt Magnus 2. Okt 2016 18:45

AW: Mehrere Instanzen auf einmal schließen
 
Mir fielen da mehrere Sachen ein, am einfachsten wäre wohl, einen Broadcast zu schicken, das alle geöffneten Programme erhalten und sich anschließend schließen. Oder die erste geöffnete Instanz fungiert als Server, bei dem sich die folgenden Instanzen anmelden.
Will man Netzwerk vermeiden, könnte man ebenso die Prozessliste durchgehen und Messages verschicken. Auch hier könnte man wieder die erste geöffnete Instanz als Mittler verwenden.
Oder das hier (wo auch noch ein paar Methoden genannt werden, wenngleich etwas älter):
https://www.delphi-treff.de/tutorial...-mapped-files/

himitsu 2. Okt 2016 18:50

AW: Mehrere Instanzen auf einmal schließen
 
oder MSDN-Library durchsuchenFindWindow/MSDN-Library durchsuchenFindWindowEx und dann MSDN-Library durchsuchenPostMessage+WM_QUIT

ramboni 4. Okt 2016 14:52

AW: Mehrere Instanzen auf einmal schließen
 
Der Titel des Forms ändert sich sekündlich, geht das trotzdem?

himitsu 4. Okt 2016 15:07

AW: Mehrere Instanzen auf einmal schließen
 
Dann eben über den Klassennamen der Form und und nicht die Caption. :zwinker: (auch besser, bezüglich Lokalisierung)

Eventuell besser auch noch den Namen der EXE prüfen, falls der Klassenname sowas wie TForm1 ist :stupid:
(den Thread der gefundenen Form nennt dir Windows und davon schaut man dann, zu welchem Programm der Thread gehört)

Oder du verwendest IPC und sendest direkt an die Anwendungen.
z.B. MSDN-Library durchsuchenRegisterWindowMessage und dann einen Broadcast (PostMessage) an "alle" TopLevel-Fenster.
Deine Programme hören/verstehen dabei diese Message und machen dann etwas.

ramboni 4. Okt 2016 15:14

AW: Mehrere Instanzen auf einmal schließen
 
Danke, werde es versuchen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr.

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