Newsgroup: it.comp.lang.visual-basic
Titolo: Riavviare windows da un applicazione VB

Ho visto un post sul NG che trattava l'argomento, ma il mio utilissimo
collegamento ad Internet si e' perso per l'ennesima volta le News, post
compreso....
...se potete ripostare o raggiungermi alla mia e-mail:(
Grazie
<Luigi> 
omc...@msoft.it

Io ne ho già pronto uno..... se vuoi te lo mando via mail....
devo solo finire una cosina, poi è pronto....
Programmi di spegnere il PC (oppure solo disconnettere l'utente,
riavviare il PC, chiudere tutti i processi...) o ad una determinata
ora o dopo un certo intervallo di tempo.
Risiede nella System Tray ed è abbastanza comodo.
ciao,
si...@tin.it

...


OK, appena lo finisco, lo mando.... questione di ore...
ciao,
si...@tin.it

...


Si fa così!
...



Per NT prova il codice qui sotto.
--
Roal Zanazzi
z...@iol.it
'=========================DECLARE.BAS===================================
Option Explicit
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const TOKEN_QUERY = &H8
Public Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const SE_PRIVILEGE_ENABLED = &H2
Public Type LUID
    UsedPart As Long
    IgnoredForNowHigh32BitPart As Long
End Type
Public Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    TheLuid As LUID
    Attributes As Long
End Type
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal
dwReserved As Long) As Long
Declare Function LookupPrivilegeValue Lib "advapi32" Alias _
    "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As
String, _
    lpLuid As LUID) As Long
Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As
Long, _
    ByVal DesiredAccess As Long, TokenHandle As Long) As Long
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
'====================REBOOT=================================================
=
'
' Codice di esempio per il reboot, logoff e riavvio di un sistema Windows NT
'
Option Explicit
Private Sub Logoff_Click()
    AdjustToken
    Call ExitWindowsEx(EWX_LOGOFF Or EWX_FORCE, 0)
End Sub
Private Sub Reboot_Click()
    AdjustToken
    Call ExitWindowsEx(EWX_REBOOT Or EWX_FORCE, 0)
End Sub
Private Sub Shutdown_Click()
    AdjustToken
    Call ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE, 0)
End Sub
'
'  Taken from MSDN
'
Private Sub AdjustToken()
    Dim hdlProcessHandle As Long
    Dim hdlTokenHandle As Long
    Dim lBufferNeeded As Long
    Dim tmpLuid As LUID
    Dim tkp As TOKEN_PRIVILEGES, tkpNewButIgnored As TOKEN_PRIVILEGES
    hdlProcessHandle = GetCurrentProcess()
    OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or
TOKEN_QUERY), hdlTokenHandle
    LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
    tkp.PrivilegeCount = 1
    tkp.TheLuid = tmpLuid
    tkp.Attributes = SE_PRIVILEGE_ENABLED
    AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored),
tkpNewButIgnored, lBufferNeeded
End Sub