ExitWindowsEx
Stänger av eller startar om användarens dator. Eftersom avstängning/omstart börjar när funktionen anropas, finns det inte mycket för programmet att göra.
Returnerar
Funktionen returnerar 0 om ett fel inträffade. Om funktionen lyckas, returneras ett icke-noll-värde.
Parameters
uFlags
En eller flera av följande flaggor specifierar hur omstarten
eller avstägningen av datorn sker:
EWX_FORCE = 4
Tvingar applikationer att stängas utan att be användaren att stänga dem
EWX_LOGOFF = 0
'Loggar av från nätverket.
EWX_POWEROFF = 8
'Stäng av operativsystem och om det är möjligt, stäng av datorn.
EWX_REBOOT = 2
Genomför en full omstart av datorn.
EWX_SHUTDOWN = 1
Stänger ner systemet.
dwReserved
Reserverad för senare versioner av Windows, Sätts alltid till 0.
Form
Exempel:' Startar om datorn, tvingar öppna program att stängas
Dim retval As Long ' returvärdet
retval = ExitWindowsEx(EWX_REBOOT Or EWX_FORCE, 0)
If retval = 0 Then Debug.Print "Omstarten misslyckades."
Man behöver inte heller använda API:et på de plattformar där WMI (Windows Management Instrumentation) är förinstallerat (Me, 2000, XP).
Om man lägger till en referens till WMI Scripting Library så kan man skriva:
Dim p_objSet As SWbemObjectSet
Dim p_objSWbemObj As Object
Set p_objSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2"). _
ExecQuery("select * from Win32_OperatingSystem where Primary=true")
For Each p_objSWbemObj In p_objSet
p_objSWbemObj.reboot
Next p_objSWbemObj