📄 form1.vb
字号:
Friend Class Form1
Inherits System.Windows.Forms.Form
#Region "Windows 窗体设计器生成的代码"
Public Sub New()
MyBase.New()
'此调用是 Windows 窗体设计器所必需的。
InitializeComponent()
End Sub
'窗体重写处置,以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal Disposing As Boolean)
If Disposing Then
If Not components Is Nothing Then
components.Dispose()
End If
End If
MyBase.Dispose(Disposing)
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
Public ToolTip1 As System.Windows.Forms.ToolTip
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器来修改它。
'不要使用代码编辑器修改它。
Public WithEvents Button3 As System.Windows.Forms.Button
Public WithEvents Button2 As System.Windows.Forms.Button
Public WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components)
Me.Button3 = New System.Windows.Forms.Button
Me.Button2 = New System.Windows.Forms.Button
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button3
'
Me.Button3.BackColor = System.Drawing.SystemColors.Control
Me.Button3.Cursor = System.Windows.Forms.Cursors.Default
Me.Button3.ForeColor = System.Drawing.SystemColors.ControlText
Me.Button3.Location = New System.Drawing.Point(48, 96)
Me.Button3.Name = "Button3"
Me.Button3.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.Button3.Size = New System.Drawing.Size(97, 25)
Me.Button3.TabIndex = 2
Me.Button3.Text = "关机"
'
'Button2
'
Me.Button2.BackColor = System.Drawing.SystemColors.Control
Me.Button2.Cursor = System.Windows.Forms.Cursors.Default
Me.Button2.ForeColor = System.Drawing.SystemColors.ControlText
Me.Button2.Location = New System.Drawing.Point(48, 64)
Me.Button2.Name = "Button2"
Me.Button2.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.Button2.Size = New System.Drawing.Size(97, 25)
Me.Button2.TabIndex = 1
Me.Button2.Text = "重新启动"
'
'Button1
'
Me.Button1.BackColor = System.Drawing.SystemColors.Control
Me.Button1.Cursor = System.Windows.Forms.Cursors.Default
Me.Button1.ForeColor = System.Drawing.SystemColors.ControlText
Me.Button1.Location = New System.Drawing.Point(48, 32)
Me.Button1.Name = "Button1"
Me.Button1.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.Button1.Size = New System.Drawing.Size(97, 25)
Me.Button1.TabIndex = 0
Me.Button1.Text = "注销"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.BackColor = System.Drawing.SystemColors.Control
Me.ClientSize = New System.Drawing.Size(196, 146)
Me.Controls.Add(Me.Button3)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Cursor = System.Windows.Forms.Cursors.Default
Me.Location = New System.Drawing.Point(4, 23)
Me.Name = "Form1"
Me.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.Text = "重新启动和关闭计算机"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub AdjustToken()
'下面程序设置相应的权限以使能在Windows2000/XP系统中注销、重新启动或者关闭
Const TOKEN_ADJUST_PRIVILEGES As Short = &H20S
Const TOKEN_QUERY As Short = &H8S
Const SE_PRIVILEGE_ENABLED As Short = &H2S
Dim hdlProcessHandle As Integer
Dim hdlTokenHandle As Integer
Dim tmpLuid As LUID
Dim tkp As TOKEN_PRIVILEGES
Dim tkpNewButIgnored As TOKEN_PRIVILEGES
Dim lBufferNeeded As Integer
SetLastError(0)
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
Private Sub Button1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button1.Click
If glngWhichWindows32 = mlngWindowsNT Then
AdjustToken()
End If
ExitWindowsEx(EWX_LogOff, 0)
End Sub
Private Sub Button3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button3.Click
If glngWhichWindows32 = mlngWindowsNT Then
AdjustToken()
End If
ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE Or EWX_POWEROFF, 0)
End Sub
Private Sub Button2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button2.Click
If glngWhichWindows32 = mlngWindowsNT Then
AdjustToken()
End If
ExitWindowsEx(EWX_REBOOT, 0)
End Sub
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
'判断当前操作系统的版本
Dim lngVersion As Integer
lngVersion = GetVersion()
If ((lngVersion And &H80000000) = 0) Then
glngWhichWindows32 = mlngWindowsNT
Else
glngWhichWindows32 = mlngWindows95
End If
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -