Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Senior++ en 10 Septiembre 2011, 13:17 pm



Título: Duda con apagar y reiniciar windows(Solucionado)
Publicado por: Senior++ en 10 Septiembre 2011, 13:17 pm
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

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:

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


Título: Re: Duda con apagar y reiniciar windows
Publicado por: x64core en 10 Septiembre 2011, 16:28 pm
 :P no le veo tanto problema
Código
  1. Public Const EWX_SHUTDOWN = 1 'apagar
  2. Public Const EWX_REBOOT = 2       'reiniciar
  3. Public Const EWX_FORCE = 4          'forzar el apagado de window
  4.  

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


Título: Re: Duda con apagar y reiniciar windows(Solucionado)
Publicado por: Senior++ en 10 Septiembre 2011, 20:14 pm
Solución: Se hace con la Api ExitWindowsEx

Código:
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