webForumDet fria alternativet

Windows

4 svar · 317 visningar · startad av alan

alanMedlem sedan sep. 200279 inlägg
#1

Hej,
Jag skulle vilja ha 2 koder till VB

1. Starta om datorn
2. Stänga av datorn

Hälsningar!

GeinMedlem sedan sep. 20005 700 inlägg
#2

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

nikoMedlem sedan juni 20022 599 inlägg
#3

Gein skrev:

Kommentarer
Plattformar: Win 95/98, Win NT

kä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.

GeinMedlem sedan sep. 20005 700 inlägg
#4

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

nikoMedlem sedan juni 20022 599 inlägg
#5

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.

132 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)