谁给个VB写的强行关机的代码?
来源:百度知道 编辑:UC知道 时间:2024/05/12 15:42:55
不要调用shutdown的,就是纯api是实现的,我这里有一个,可是本来该强行关机结果确实注销,怎么搞?
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
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
Type LUID
lowpart As Long
highpart As Long
End Type
Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function LookupPrivilegeValue Lib "ad
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
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
Type LUID
lowpart As Long
highpart As Long
End Type
Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function LookupPrivilegeValue Lib "ad
其实不用那么麻烦的。
Shell "cmd /c shutdown -s -t 1", vbHide
强制关闭应用程序
Shell "cmd /c shutdown -s -f -t 1", vbHide
-----------------------
>>因为这个在win2k以下的系统没用
这句话我同意,但是win2k以下的系统关机不需要得到系统权限,所以用Api很简单.
你要作的就是得到windows的版本,然后
如果是win2k以下,api关机
如果winxp就Shell "cmd /c shutdown -s -f -t 1", vbHide
如果vista Shell "cmd /c shutdown /s /f /t 0",0
否则你用API好像也没有通一API就能关的,我以前作过一个关机的就是这么个思路写的,但不是用的VB
我那次搜到了一个代码,可以实现3秒钟切断电源一样的效果,不过可能对软硬件有伤害,不太建议使用,不过那个方法只调用了一个API,全部代码只有5行,很简练。找autorun.inf@163.com如果要的话
shutdown -s -t 0 -f