Duda con apagar y reiniciar windows(Solucionado)

Iniciado por Senior++, 10 Septiembre 2011, 13:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Senior++

Bueno pues con la función ExitWindowsEx  puedo apagar y reiniciar windows y cerrarlo pero me a surgido una duda... y es con este código


'Declaración de la función ExitWindowsEx
Private Declare Function ExitWindowsEx Lib "User32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

'Constanets para la función
Const cerrarWin = 1
Const reiniciarWin = 2

Private Sub Command1_Click()
Dim retorno As Long
If Option1 Then retorno = ExitWindowsEx(reiniciar, 0)
If Option2 Then retorno = ExitWindowsEx(cerrar, 0)
End Sub


Bueno e puesto 2 options y 1 comando, entonces en un tutorial y decía....  NOTA:  esto aunque nosotros utilicemos solo el primer parámetro, en el segundo, dwreserved, debemos pasarle el valor 0.

Entonces me informe y el uFlags tiene unos valores.. y son  
0 = Reinicia windows.
1 = Apaga el sistema.
2 = Reinicia el sistema.


Entonces mi pregunta es en este código:

If Option1 Then retorno = ExitWindowsEx(reiniciar, 0)
If Option2 Then retorno = ExitWindowsEx(cerrar, 0)


El primero option si lo veo razonable pero el segundo option no ya que el 0= a Reiniciar el Sistema  en todo caso sería 1 para apagar el sistema...?

Es que no lo entiendo bien...

Edito: También estoy haciendo pruebas y las 'Constanets para la función
Const cerrarWin = 1
Const reiniciarWin = 2
las e borrado,para ver si se apaga el equipo o se reiniciaba y si funcionaba bien
Saludos


Saludos
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

x64core

 :P no le veo tanto problema
Código (vb) [Seleccionar]

Public Const EWX_SHUTDOWN = 1 'apagar
Public Const EWX_REBOOT = 2       'reiniciar
Public Const EWX_FORCE = 4          'forzar el apagado de window


las constantes no importa si las borras, eso sirve para que el codigo sea mas entendible y legible

Senior++

Solución: Se hace con la Api ExitWindowsEx

Option Explicit
'Control de Apagar, Cerrar Session, reiniciar
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4

Private Sub Command1_Click(Index As Integer)
   Select Case Index
       Case 0 'Cerrar Session
           ExitWindowsEx EWX_LOGOFF, 0 'Cierra sesión en Win 98, 2000, XP
       Case 1 'Reiniciar PC
           ExitWindowsEx EWX_REBOOT, 0 'Reinicia el Sistema
           Shell "shutdown -r -f -t 0" 'Reinicia el equipo en Win XP
       Case 2 'Apagar PC
           ExitWindowsEx EWX_SHUTDOWN, 0 'Apaga el equipo en Win 98, 2000
           Shell "shutdown -s -t 0" 'Apaga el equipo en Win XP
   End Select
End Sub
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata