×
Siemens Industry Online Support
Siemens AG
Beitragstyp: Anwendungsbeispiel Beitrags-ID: 2976503, Beitragsdatum: 12.09.2003
(0)
Bewerten

Starten und Beenden eines Windows Programms aus WinCC

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:
Wie kann ich ein Windows-Programm beenden, während ich mich in der Runtime von WinCC befinde?

ANTWORT:
Sie können ein Programm mit Hilfe von Win32 API-Funktionen beenden:

  • Die Funktion "SendMessage" schickt an einen Prozess die Anforderung sich zu beenden und wartet bis diese Anforderung ausgeführt wurde. Danach kehrt Sie zu dem aufrufenden Script zurück.
  • Die Funktion "PostMessage" sendet ebenfalls die Anforderung, dass der Prozess sich beenden soll. Jedoch wird sofort zum aufrufenden Script zurückgekehrt, ohne abzuwarten, bis die Anforderung wirklich ausgeführt wurde.
  • Die Funktion "TerminateProcess" entfernt den Prozess aus dem Arbeitspeicher. Die Wirkung ist die gleiche, als würden Sie im WindowsNT TaskManager auf den Button "Task beenden" drücken.

Achtung !:
Durch die Verwendung der Funktion "TerminateProcess" können Daten verloren gehen. Die Daten, welche das Programm momentan bearbeitet, können nicht gespeichert werden.
Mit den Funktionen "SendMessage" und "PostMessage" wird den Programmen die Möglichkeit gegeben, ihre Verbindungen zu Datenbanken, OPC-Servern, DLL-en, usw. ordnungsgemäß zu beenden.
Verwenden Sie daher immer die Funktionen "SendMessage" und "PostMessage".

Folgendes WinCC Projekt zeigt, wie man das Standard-Windows-Programm "Rechner" beenden kann. Im Startbild sehen Sie fünf Buttons. Mit dem Button "Start Calculator" starten Sie das Programm. Mit den Buttons "Close Calculator terminate", "Close Calculator SendMessage" und "Close Calculator PostMessage" schließen Sie alle "Rechner" Programme, die auf dem PC laufen.

Das Skript für den Button "Close Calculator" lässt sich in folgende Teile gliedern:

  1. Ausgehend vom Fensterklassennamen wird das Handle auf das "Rechner"-Fenster ermittelt. Der Namen der Klasse für das Rechnerfenster ist "SciCalc".
    Hinweis:
    Den Namen einer Fensterklasse können Sie mit dem Programm "Spy++" herausfinden. "Spy++" ist zum Beispiel im Lieferumfang von Microsoft VC++ enthalten.
  2. Die ID für den zugehörigen Prozess wird ermittelt.
  3. Es wird ein Handle auf den Prozess erzeugt.
  4. Der Prozess wird beendet.

Für die Funktionen "SendMessage" und "PostMessage" entfallen die Punkte 2 und 3.

Hinweis:
Nachfolgend finden Sie je ein Beispielprojekt für SIMATIC WinCC V5.x und für SIMATIC WinCC V6.0. Die Funktionalität der beiden Beispiele ist identisch.

Die Datei "end_task.exe" enthält ein WinCC Projekt. Das Projekt ist mit WinCC V5.0 SP1 erstellt worden.

end_task.exe

Laden Sie die Datei herunter und extrahieren Sie das Projekt per Doppelklick in ein Verzeichnis. Danach können Sie es mit WinCC öffnen und weiter bearbeiten. Passen Sie zuerst den Rechnernamen an.

Die Datei "end_task_V6.exe" enthält ein WinCC Projekt. Das Projekt ist mit WinCC V6.0 erstellt worden.

end_task_V6.exe

Laden Sie die Datei herunter und extrahieren Sie das Projekt per Doppelklick in ein Verzeichnis. Danach können Sie es mit WinCC öffnen und weiter bearbeiten. Passen Sie zuerst den Rechnernamen an.

Suchbegriffe:
Prozessbearbeitung, Taskverwaltung


Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.