Results 1 to 2 of 2

Thread: Show Shutdown dialog box

  1. #1

    Thread Starter
    Lively Member
    Join Date
    May 1999
    Location
    belgium
    Posts
    74

    Show Shutdown dialog box

    Hello,


    How can I show the Microsoft Shut Down dialog box on a NT4 SP6
    with VB 6 ?

    I tryed it with this (see code)

    But it only show the logon screen. When using
    EWX_LogOff, EWX_SHUTDOWN, EWX_REBOOT, EWX_POWEROFF
    in ExitWindowsEx, it retreives 0


    Code:
    --------

    Public glngWhichWindows32 As Long

    Private Const EWX_LogOff As Long = 0
    Private Const EWX_SHUTDOWN As Long = 1
    Private Const EWX_REBOOT As Long = 2
    Private Const EWX_FORCE As Long = 4
    Private Const EWX_POWEROFF As Long = 8
    Private Const mlngWindows95 = 0
    Private Const mlngWindowsNT = 1

    Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
    Private Declare Function GetLastError Lib "kernel32" () As Long
    Private Declare Function GetVersion Lib "kernel32" () 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
    Private Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long)

    Private Type LUID
    UsedPart As Long
    IgnoredForNowHigh32BitPart As Long
    End Type

    Private Type LUID_AND_ATTRIBUTES
    TheLuid As LUID
    Attributes As Long
    End Type

    Private Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    TheLuid As LUID
    Attributes As Long
    End Type

    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

    SetLastError 0

    hdlProcessHandle = GetCurrentProcess()
    OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle

    LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
    tkp.PrivilegeCount = 1 ' One privilege to set
    tkp.TheLuid = tmpLuid
    tkp.Attributes = SE_PRIVILEGE_ENABLED
    AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
    End Sub


    Public Sub Shutdown()
    If glngWhichWindows32 = mlngWindowsNT Then
    AdjustToken
    End If

    ExitWindowsEx EWX_FORCE, &HFFFF
    End Sub



    Thanks

    Deju

  2. #2
    I'm about to be a PowerPoster! Hack's Avatar
    Join Date
    Aug 2001
    Location
    Searching for mendhak
    Posts
    58,333
    VB Code:
    1. Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal lType As Long) As Long
    2. Private Const EWX_LOGOFF = 0
    3. Private Const EWX_SHUTDOWN = 1
    4. Private Const EWX_REBOOT = 2
    5. Private Const EWX_FORCE = 4
    6. Private Const EWX_POWEROFF = 8
    7.  
    8. Private Sub Command1_Click()
    9.     Dim ShowShut As Long
    10.     ShowShut = SHShutDownDialog(0)
    11. End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width