[VB.NET]实现关机和重新启动

实现关机和重新启动

实例说明

在本实例中,我们将制作一个能重新启动和关闭计算机的应用程序。程序运行后,弹出如图86-1所示的界面,用户选择相应的选项后即可执行关机和重新启动操作。并将此次的选择保存下来。

图86-1 运行结果

技术要点

l 关闭和重新启动计算机

l 窗体的KeyPreview 属性

实现过程

■ 新建项目

打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中选择"Windows应用程序",在名称域中输入"ControlComputer",然后选择保存路径。单击"确认"。

添加控件

向当前窗体添加一个Label控件、一个PictureBox控件、两个Button按钮和三个RadioButton控件。

■ 设置属性

切换到属性栏,对窗体及控件设置属性,详细情况如表86-1所示。

注意:如果KeyPreview 属性被设置为True,窗体将先于该窗体上的控件接收此事件。可用 KeyPreview 属性来创建全局键盘处理例程。

表86-1 窗体及控件的属性

窗体/控件 属性

Form1 BorderStyle 4-Fixed ToolWindow

KeyPreview True

Command1 Caption 是(&Y)

Picture1 Picture App.path & "/1.jpg"

其他控件 Caption 跟界面一致

添加代码

Private Declare Function ExitwindowsEx Lib "user32" (ByVal uFlags As Integer,ByVal dwReserved As Integer) As Integer

Const EWX_FORCE As Short = 4

Const EWX_logoFF As Short = 0

Const EWX_REBOOT As Short = 2

Const EWX_SHUTDOWN As Short = 1

Dim retval As Integer

' 定义Esc按键

Const VK_ESCAPE As Short = &H1Bs

Private Sub Command1_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Command1.Click

If Option1.Checked Then

' 注销当前用户

retval = ExitwindowsEx(EWX_FORCE,0)

ElseIf Option2.Checked Then

' 关闭计算机

retval = ExitwindowsEx(EWX_SHUTDOWN,0)

ElseIf Option3.Checked Then

' 重新启动

retval = ExitwindowsEx(EWX_REBOOT,0)

End If

End Sub

Private Sub Command2_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Command2.Click

Me.Close()

End Sub

' 按Esc键时,结束应用程序

Private Sub Form1_KeyPress(ByVal eventSender As System.Object,ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

If KeyAscii = VK_ESCAPE Then

Me.Close()

End If

If KeyAscii = 0 Then

eventArgs.Handled = True

End If

End Sub

■ 运行程序

单击菜单"调试|启动"或单击 图标运行程序。

小结

本实例通过使用ExitwindowEx()API函数来达到关机和重新启动的目的。在ExitwindowEx()函数中,参数uFlags指定要进行何种操作。在表86-2中列出了参数uFlags的值及其说明。

表86-2 参数uFlags的值及说明

常量名 值 说明

EWX_FORCE 4 终止所有进程,包括没有响应的进程,并注销Windows

EWX_REBOOT 2 重新启动系统

EWX_SHUTDOWN 1 关闭系统

EWX_logoFF 0 终止所有正在运行的进程,并注销Windows

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...