Windows
4 svar · 317 visningar · startad av alan
Det här torde funka.
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."
Kommentarer
Plattformar: Win 95/98, Win NT
källa: pellesoft.nu
Gein skrev:
Kommentarer
Plattformar: Win 95/98, Win NTkälla: pellesoft.nu
I så fall har din källa delvis fel. Ett enkelt ExitWindowsEx fungerar bara på Win9x. NT, 2000 och XP är ganska mycket krångligare.
Kod: http://support.microsoft.com/default.aspx?scid=KB;en-us;q176695.
Dessutom måste processen som anropar koden så klart ha rättigheter att boota om, vilket normalt bara Power Users/Administrators har.
Ja just det. Minns att jag hade problem med det förut, ska se om jag hittar någon gammal kod för jag vet att jag fick det att funka till w2k
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
RebootNT_WMI.zip på http://gethelp.devx.com/techtips/nt_pro/10_minute_solutions/10minNT1200-3.asp innehåller exempel både med WMI och API.