cs_Sna
Messages postés18Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention21 janvier 2003
-
28 juin 2002 à 12:30
jpeman
Messages postés22Date d'inscriptionsamedi 18 janvier 2003StatutMembreDernière intervention24 mai 2005
-
4 juil. 2003 à 14:49
Bonjour
voila, j'ai essaye toutes les sources fournies ici, aucunes n'arrive a me redemarer mon pc
quelqu'un a quelque chose de probant la dessus?
Un grand merci
cs_Sna
Messages postés18Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention21 janvier 2003 28 juin 2002 à 14:03
j'ai fait plus de tests
Call ExitWindowsEx(EWX_FORCE, 0)
est la seule commande qui donne un resultat meilleur que rien :)
mais bon, ce n'est qu un logoff, c'est pas encore un reboot :(
Sna
Derrick soft
Messages postés97Date d'inscriptionjeudi 10 mai 2001StatutMembreDernière intervention20 juin 2005 29 juin 2002 à 12:01
Bonjour,
Voici un module de class qui fonctionne sous win 9x/2000/NT/XP :
Option Explicit
'APIs
'******************************************************************************
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal _
ProcessHandle As Long, _
ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" _
Alias "LookupPrivilegeValueA" _
(ByVal lpSystemName As String, ByVal lpName As String, lpLuid _
As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" _
(ByVal TokenHandle As Long, _
ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES _
, ByVal BufferLength As Long, _
PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
'******************************************************************************
'Constants
'******************************************************************************
Private Const EWX_FORCE As Long = 4
'******************************************************************************
'Types
'******************************************************************************
Private Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type
'******************************************************************************
'Enumerations
'******************************************************************************
Public Enum EnumExitWindows
'Functions and Subs
'******************************************************************************
Private Sub AdjustToken()
Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2
Dim hdlProcessHandle As Long
Dim hdlTokenHandle As Long
Dim tmpLuid As LUID
Dim tkp As TOKEN_PRIVILEGES
Dim tkpNewButIgnored As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
hdlProcessHandle = GetCurrentProcess()
OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _
TOKEN_QUERY), hdlTokenHandle
' Get the LUID for shutdown privilege.
LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
tkp.PrivilegeCount = 1 ' One privilege to set
tkp.TheLuid = tmpLuid
tkp.Attributes = SE_PRIVILEGE_ENABLED
' Enable the shutdown privilege in the access token of this process.
AdjustTokenPrivileges hdlTokenHandle, False, _
tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
End Sub
Public Sub ExitWindows(ByVal l_Command As EnumExitWindows)
AdjustToken
ExitWindowsEx (l_Command Or EWX_FORCE), 0
End Sub
'**
Et à mettre dans un bouton :
Private Sub cmdAcept_Click()
Dim l_ExitWindows As New cls_ExitWindows
'Ask which Option is checked
If optPowerOff.Value = True Then
'Power off windows
l_ExitWindows.ExitWindows WE_POWEROFF
ElseIf optShutDown.Value = True Then
'Shutdown windows
l_ExitWindows.ExitWindows WE_SHUTDOWN
ElseIf optReboot.Value = True Then
'Reboot windows
l_ExitWindows.ExitWindows WE_REBOOT