C++ Befehl "Programm beenden"

4 Antworten

Du meinst ein anderes Programm schließen, also nicht, das Programm soll sich selbst schließen?

Das ist von Betriebssystem zu Betriebssystem unterschiedlich. Der Code, den du oben gepostet hast, ist Windows-Code, so dass ich denke, dass du Windows verwendest.

Hier gibt es mehrere Möglichkeiten:

  • Der Befehl "system" ruft intern einen Befehl "CreateProcessA" oder "CreateProcessW" auf. Wenn man diesen Befehl direkt aufruft, bekommt man ein "Handle" zum gestarteten Programm. Dieses kann man dann benutzen, um mit "TerminateProcess()" das Programm wieder zu beenden. Achtung: Das Programm wird dabei knallhart beendet.
  • Der Windows-Taskmanager sendet meines Wissens eine WM_QUIT-Nachricht an das Programm. Dabei hat das Programm zumindest theoretisch noch die Möglichkeit, Daten abzuspeichern...
  • Am sinnvollsten wäre es meiner Meinung nach, an das Fenster des Programms eine WM_CLOSE-Nachricht zu schicken. Das ist so, als würde man auf den "X"-Button in der Titelleiste klicken.

Alle drei Varianten sind nicht ganz einfach.

Gibt es bei C++ einen Befehl, der ein geöffnetes Programm wieder schließt?
  1. C++ ist eine Programmiersprache, die es für die verschiedensten Betriebssysteme gibt.
  2. Diese stellen Systemfunktionen zur Verfügung, die auch ein Programm beenden.
  3. In den (System-)Libraries werden diese Systemfunktionen auch dem Compiler verfügbar gemacht. Sie sind jedoch kein Teil der Sprache.
  4. C++ stellt als Programmiersprache mit dem Compiler die Umsetzung des Quellcodes in ausführbaren Code zur Verfügung, aber Systemfunktionen sind kein Bestandteil von C++ sondern des Systems, auf dem ein Programm laufen soll …

Also nach der langen Voraberklärung: Es gibt keinen C++-Befehl, der ein Programm beendet.

Tja, wie Martin schon sagt ist es wahrscheinlich am Sinnvollsten (In deinem Fall) mit "CreateProcessA" oder "CreateProcessW" das Programm zu starten und dann über "TerminateProcess" das Programm zu killen. wenn du den System befehl verwenden willst geht das natürlich auch:

system("tskill Programm-Name")

Hierbei ist zu beachten das dies nur unter Windows funktioniert. Als Programm-Name kannst du alles mögliche angeben. Wenn du nur ein explizietes Programm Töten willst solltest du allerdings den ganzen namen mit extension schreiben. Sonst wird das nächste Programm getötet auf das der Teil-Name zutrifft. Mit tskill * tötest du zB. Alle Tasks. ^^

me.close oder application.exit

wolfgang1956  11.11.2014, 10:30

Das ist aber kein C++-Befehl …

0