Mit Excel Windows beenden

Ich programmiere momentan mit VBA eine Excel-Unterstützung. Dabei benötige ich eine Möglichkeit, Windowsá95 aus der Anwendung heraus zu beenden. Wie läßt sich das realisieren?

Für das Beenden von Windows 95 aus einer Anwendung heraus stehen Ihnen mehrere Möglichkeiten zur Verfügung. Sie können zum Beispiel das gesamte System herunterfahren und abschalten oder auch nur einen Benutzer abmelden.
Dafür sind aber Kenntnisse über das Win32-API (Application Programming Interface) nötig. Das API ist eine Schnittstelle für den Zugriff von Anwendungen auf Betriebssystemfunktionen. Solche Funktionen können Sie mit entsprechenden Parametern aus Ihrer Anwendung heraus aufrufen.
Für Ihre Zwecke eignet sich am besten die Funktion ExitWindowsEx. Sobald Sie die Funktion aktivieren, fordert diese alle aktiven Prozesse zum Beenden auf. Wenn das gelingt, veranlaßt sie anschließend das Betriebssystem, den Rechner herunterzufahren. Je nach Rechner kann das bis zum Abschalten der Stromzufuhr gehen.
Um die Funktion zu nutzen, wechseln Sie im Visual-Basic-Editor in das entsprechende Modul. Dort geben Sie im Deklarationsbereich folgende Anweisung ein:

Declare Function TermWin Lib “User32“ Alias “ExitWindowsEx“  (MyVal N As Integer, M As Long) As Integer
Mit einer Deklaration stellen Sie Ihrer Anwendung Funktionen aus externen Bibliotheken zur Verfügung. In diesem Fall handelt es sich um die Funktion ExitWindowsEx aus der Windows-Systembibliothek USER32.DLL. Da sich die Bibliothek im Systemordner befindet, benötigen Sie keine weiteren Pfadangaben. Wir haben die Funktion einfacher WinTerm genannt. Diese Umbenennung kann bei Konflikten unter Funktionsnamen von Bedeutung sein, ist aber nicht zwingend notwendig.
Nachdem Ihre Anwendung nun weiß, um welche Funktion es sich handelt, wo sie zu finden ist und wie sie anzusprechen ist, können Sie mit dem Listing im Kasten „Windows beenden in Excel“ auf dieser Seite unten Ihr System herunterfahren. Das Listing liegt übrigens in Form eines TXT-Files auf der aktuellen WIN-Monats-CD.
Die API-Funktionen geben typischerweise den Wert 0 oder 1 zurück. Damit signalisieren sie den Erfolg oder Mißerfolg. Wenn beispielsweise ein Prozeß auf einem höheren Sicherheitsniveau als Ihre Anwendung aktiv ist, wird er nicht auf Ihre Anforderung zum Beenden eingehen. Dann kann sich das Betriebssystem nicht selbst beenden; die Funktion gibt den Wert 1 zurück.
ExitWindowsEx ist recht vielseitig. Um beispielsweise anstelle eines kompletten Shutdown lediglich einen neuen Logon und das Beenden aller Anwendungen außer der eigenen auszulösen, rufen Sie die Funktion einfach wie folgt auf: