⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 windowsexit.bas

📁 简单时间程序,可以定时执行任务,显示当前时间到前台窗口
💻 BAS
字号:
Attribute VB_Name = "windowsexit"
Option Explicit
     Enum howwindowpos
          SWP_SHOWWINDOW = &H40
          HWND_TOPMOST = -1
          SWP_NOMOVE = &H2
          SWP_NOSIZE = &H1
          SWP_NOZORDER = &H8
          HWND_NOTOPMOST = -2
     End Enum
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Const EWX_FORCE = 4
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
Public Const EWX_POWEROFF = 8
Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Public Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const TOKEN_QUERY = &H8
Public Const SE_PRIVILEGE_ENABLED = &H2
Public Const ANYSIZE_ARRAY = 1
  Public Type LUID
               lowpart As Long
               highpart As Long
  End Type

 Public Type LUID_AND_ATTRIBUTES
        pLuid As LUID
        Attributes As Long
 End Type

 Public Type TOKEN_PRIVILEGES
              PrivilegeCount As Long
              Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
 End Type

 Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
 Public Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias _
         "LookupPrivilegeValueA" (ByVal lpSystemName As String, _
         ByVal lpName As String, lpLuid As LUID) As Long
 Public Declare Function AdjustTokenPrivileges Lib "advapi32.dll" _
         (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
 Public Declare Function OpenProcessToken Lib "advapi32.dll" _
         (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
          TokenHandle As Long) As Long
 Public Declare Function SetSystemPowerState Lib "kernel32" (ByVal fSuspend As Long, ByVal fForce As Long) As Long
    Public gjzt As Long
    Public hms1 As Long

'Public Sub AdjustToken() '????不明白的
'
'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
'
'LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
'tkp.PrivilegeCount = 1
'tkp.Privileges(0).pLuid = tmpLuid
'tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
'
'AdjustTokenPrivileges hdlTokenHandle, False, tkp, _
'Len(tkpNewButIgnored), tkpNewButIgnored, _
'lBufferNeeded
'End Sub

Sub shutdown()
AdjustToken
gjzt = ExitWindowsEx(4 + 8 + 1, 0) '强制关闭
End Sub
Sub reboot()
AdjustToken
gjzt = ExitWindowsEx(4 + 2, 0) '强制重启
End Sub
Sub xiumian()
AdjustToken
gjzt = SetSystemPowerState(1, 1) '待机
End Sub
Sub LOGOFF()
AdjustToken
gjzt = ExitWindowsEx(4 + 0, 0) '强制注销
End Sub
'总在最前
Public Sub SetFormTopmost(TheForm As Form)
SetWindowPos TheForm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE + SWP_SHOWWINDOW
End Sub
'取消总在最前
Public Sub SetFormTopBOTTOM(TheForm As Form)
SetWindowPos TheForm.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE + SWP_SHOWWINDOW
End Sub

Sub AdjustToken()
  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.Privileges(0).pLuid = tmpLuid
 tkp.Privileges(0).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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -