Prüfen ob ein Programm bereits läuft

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Prüfen ob ein Programm bereits läuft

Beitrag von DL3AD »

Hallo,
habe da mal zwei Fragen:
1. Ich möchte prüfen ob ein Programm bereits läuft - wie macht man das unter Linux und Windows ?
2. Wie kann ich ein laufendes Programm das mit Form.Hide in den Hintergrund geschickt wurde beenden ?

Gruß Frank

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Prüfen ob ein Programm bereits läuft

Beitrag von Mathias »

Vielleicht hilft dir dies weiter : http://wiki.freepascal.org/UniqueInstance/de
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Prüfen ob ein Programm bereits läuft

Beitrag von DL3AD »

Hallo Mathias,

Danke - somit ist die erste Frage geklärt.

Gruß Frank

schorsch
Beiträge: 46
Registriert: Sa 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
CPU-Target: so ziemlich alles

Re: Prüfen ob ein Programm bereits läuft

Beitrag von schorsch »

Moin,
zu 1) würde ich immer mit einem Semaphor machen ;-)
De Schorsch
der feind der erde ist der mensch

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Prüfen ob ein Programm bereits läuft

Beitrag von Michl »

DL3AD hat geschrieben:2. Wie kann ich ein laufendes Programm das mit Form.Hide in den Hintergrund geschickt wurde beenden ?
Händisch z.B. per Taskmanager. Per Code geht Application.Terminate (ich nutze hier SimpleIPC für die Kommunikation, auch für die Abfrage, ob eine Instanz schon läuft).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Prüfen ob ein Programm bereits läuft

Beitrag von DL3AD »

... manchmal sind Dinge sooo einfach :mrgreen:
Server und Client haben die selbe ID und schon funktioniert es dass nur eine Instanz läuft.

Code: Alles auswählen

 
  if IPCClient1.ServerRunning then Halt else IPCServer1.Active:= true;
 


Gruß Frank

Antworten