小技巧:VB.NET实现关机和重新启动

小技巧:VB.NET实现关机和重新启动,第1张

Private Declare Function ExitWindowsEx Lib user (ByVal uFlags As Integer ByVal dwReserved As Integer) As IntegerConst EWX_FORCE As Short = Const EWX_LOGOFF As Short = Const EWX_REBOOT As Short = Const EWX_SHUTDOWN As Short = Dim retval As Integer 定义Esc按键Const VK_ESCAPE As Short = &H BsPrivate Sub Command _Click(ByVal eventSender As System Object ByVal eventArgs As System EventArgs) Handles Command ClickIf Option Checked Then 注销当前用户冲拿段retval = ExitWindowsEx(EWX_FORCE )ElseIf Option Checked Then 关闭计算机retval = ExitWindowsEx(EWX_SHUTDOWN )ElseIf Option Checked Then 重新启动retval = ExitWindowsEx(EWX_REBOOT )End IfEnd SubPrivate Sub Command _Click(ByVal eventSender As System Object ByVal eventArgs As System EventArgs) Handles Command ClickMe Close()End Sub 按Esc键时 结束应用程序Private Sub Form _KeyPress(ByVal eventSender As System Object ByVal eventArgs As System Windows Forms KeyPressEventArgs) Handles MyBase KeyPressDim KeyAscii As Short = Asc(eventArgs KeyChar)If KeyAscii = VK_ESCAPE ThenMe Close()End IfIf KeyAscii = TheneventArgs Handled = TrueEnd IfEnd Sub本实例通过使用ExitWindowEx()API函数来达到关机和重新启动的目的 在ExitWindowEx()函数中 参数敏蠢uFlags指定要进行何种 *** 作 在表 中列出了参数uFlags的值及散誉其说明 表  参数uFlags的值及说明lishixinzhi/Article/program/net/201311/13585

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

如果要让程式记录启动次数,以及用户可以设置启动等待时间!那么请写出你的初步构思方法,例如需要用到什么函数,什么控件,通过什么来记数,计时,如何让它在系统启动时自动运行等等!

在这里先谢谢了!

解析:

1.记录启动次数:用户savesetting和getsetting语句可以将应用程序配置信息保存在注册中

2.等待时间:可以用Timer控件现实

3.重启系统:用API函数exitWindowsEx

VB声明

Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

说明

退出windows,并用特定的选项重新启动

返回值

Long,非零表示成功,零表示失败。会设置GetLastError

参数说明:

uFlags 指定下述一个或多个标志(用OR运算符合并到一起)

EWX_FORCE 强迫中止没有响应的进程

EWX_LOGOFF 中止进程,然后注销

EWX_SHUTDOWN 关掉系统电源手歼孙(如果可能的话,ATX电源就可以)

EWX_REBOOT 重新引导系统

EWX_SHUTDOWN 关闭系统

dwReserved Long,保留,设为零

4.在系统启动时自动运行

可以创建一个快捷方式复制到启动菜单中

也可以通过设置注册表中的RUN项来实,以下API可以访问注册

RegCreateKey

VB声明

Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, pResult As Long) As Long

说毕链明

在指定的项下创建一个新项。如指定的项已经存在,那么函数会打开现有的项

RegOpenKey

VB声明

Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, pResult As Long) As Long

说明

打开一个现有的注册表项

RegSetValue

VB声明

Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

说明

设置指定项或改配子项的默认值

RegQueryValue

VB声明

Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long

说明

取得指定项或子项的默认(未命名)值

可以在网上找到相关API帮助,自己写吧

vb.net程序搏嫌出错后再重启程序,目前我能裂芦实现的最好的方法就是

先用shell命令 “生一个儿子”,然后“自己死掉”基源手。

第一句

Shell(Application.StartupPath &"\我的程序.exe", vbNormalFocus)

第二句

End

完工!!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12567247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存