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

📄 module1.bas

📁 这是本人编写的一个类似于网吧管理软件
💻 BAS
字号:
Attribute VB_Name = "Module1"
Option Base 1
 Option Explicit

Type x
name As String * 20
name1 As String
password As String
time As Integer
timelimit As Integer

End Type
Type sysinfo
usernum As Integer
End Type

Public b(6) As yyy

Type yyy
name1 As String
time As Single
day As Integer
End Type

Public a(6) As x, yes As Boolean, cur As Integer, abc As Integer, xyz As Integer


Public xy As Integer, z As Integer
'Public Declare Function ExitWindowsEx Lib "user32" (ByVal uflags As Long, ByVal dwreserved As Long) As Long
Public loopfinish
Public day1 As Integer, hour1 As Integer, down As Integer, shutnow As Integer

Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
'获取当前进程的一个伪句柄
Public Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As _
Long

Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
' 退出windows,并用特定的选项重新启动
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
'在一个OSVERSIONINFO结构中载入与平台和操作系统有关的版本信息
Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As _
String, lpLuid As LUID) As Long
Public Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal okenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As _
TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As _
TOKEN_PRIVILEGES, ReturnLength As Long) As Long
'这两个api函数是winnt系统专用
Public Const EWX_LOGOFF = 0 '定义常数
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const TOKEN_QUERY = &H8
Public Const SE_PRIVILEGE_ENABLED = &H2
Public Const ANYSIZE_ARRAY = 1
Public Const VER_PLATFORM_WIN32_NT = 2
'定义类型
Public Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
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
Dim ret As Long
Dim flags As Long

'判断此系统是否为nt系统的函数
Public Function NT() As Boolean
    Dim myOS As OSVERSIONINFO
    myOS.dwOSVersionInfoSize = Len(myOS)
    GetVersionEx myOS
    NT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
    End Function
'取得nt下的关机token的权限
Public Sub EnableShutDown()
    Dim lProc As Long
    Dim lToken As Long
    Dim lLUID As LUID
    Dim tPriv As TOKEN_PRIVILEGES
    Dim tNewPriv As TOKEN_PRIVILEGES
    Dim buffer As Long
    lProc = GetCurrentProcess()
    OpenProcessToken lProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, lToken
    LookupPrivilegeValue "", "SeShutdownPrivilege", lLUID
    tPriv.PrivilegeCount = 1
    tPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
    tPriv.Privileges(0).pLuid = lLUID
   AdjustTokenPrivileges lToken, False, tPriv, Len(tNewPriv), tNewPriv, buffer
End Sub
'首先调用判断os的函数,如为nt则调用nt下的关机函数,而9x系统中可直接调用ExitWindowsEx函数




⌨️ 快捷键说明

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