实现方法:
使用ExitWindowsEx 函数,定义如下:
Private Declare Function ExitWindowsEx Lib "user32"
(ByVal uFlags As Long,ByVal dwReserved As Long) As Long
ExitWindowsEx 函数根据不同的参数进行不同的操作:参数 EWX_LOGOFF将关闭当前所有进程,然后
注销当前用户;参数EWX_REBOOT将关闭当前系统,然后重新启动;参数EWX_SHUTDOWN将关闭计算机。步骤:在穿体中添加3个单选按纽和一个确定按纽~~~~~~~~~~~~~~~~~~程序代码~~~~~~~~~~~~~~~~~~~~
'字符常量
Pubic Opt As stringPrivate Sub Command1_Click()
HandleOpt
End Sub'缺省选项
Private Form_Load()
Opt="shutdown"
End Sub'选择
Private Sub Option1_Click()
Opt="shutdown"
End Sub
Private Sub Option2_Click()
Opt="restart"
End Sub
Private Sub Option3_Click()
Opt="logoff"
End Sub'执行操作
Private Function HandleOpt()
select Case Opt
Case "shutdown":
ExitWindowsEx EWX_SHUTDOWN,0 '关闭
Case "restart":
ExitWindowsEx EWX_REBOOT,0 '重启
Case "logoff":
ExitWindowsEx EWX_LOGOFF,0 '注销
End select
End Function~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~
注意::在WIN 2K,NT,XP下需要用户有相应的权限
呵呵,大家好,以后我会把我所有用过的API函数给贴出来,
但哪些需要贴的,哪些不需要的,希望大家留言支持~
我的目的不是得到多少个星星,这两裤衩子够换了 呵呵
只是希望能给大家一点有用的信息,哪怕一点点也好~~谢谢
使用ExitWindowsEx 函数,定义如下:
Private Declare Function ExitWindowsEx Lib "user32"
(ByVal uFlags As Long,ByVal dwReserved As Long) As Long
ExitWindowsEx 函数根据不同的参数进行不同的操作:参数 EWX_LOGOFF将关闭当前所有进程,然后
注销当前用户;参数EWX_REBOOT将关闭当前系统,然后重新启动;参数EWX_SHUTDOWN将关闭计算机。步骤:在穿体中添加3个单选按纽和一个确定按纽~~~~~~~~~~~~~~~~~~程序代码~~~~~~~~~~~~~~~~~~~~
'字符常量
Pubic Opt As stringPrivate Sub Command1_Click()
HandleOpt
End Sub'缺省选项
Private Form_Load()
Opt="shutdown"
End Sub'选择
Private Sub Option1_Click()
Opt="shutdown"
End Sub
Private Sub Option2_Click()
Opt="restart"
End Sub
Private Sub Option3_Click()
Opt="logoff"
End Sub'执行操作
Private Function HandleOpt()
select Case Opt
Case "shutdown":
ExitWindowsEx EWX_SHUTDOWN,0 '关闭
Case "restart":
ExitWindowsEx EWX_REBOOT,0 '重启
Case "logoff":
ExitWindowsEx EWX_LOGOFF,0 '注销
End select
End Function~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~
注意::在WIN 2K,NT,XP下需要用户有相应的权限
呵呵,大家好,以后我会把我所有用过的API函数给贴出来,
但哪些需要贴的,哪些不需要的,希望大家留言支持~
我的目的不是得到多少个星星,这两裤衩子够换了 呵呵
只是希望能给大家一点有用的信息,哪怕一点点也好~~谢谢
解决方案 »
- WebBrowser循环终止问题
- 用sql查一个字段中包含多少个";",怎么写?
- 请问有没有vb用的免费文本编辑控件(支持语法彩色显示)。
- updatebatch更新的时候出问题了,来帮忙cc啦
- 关于远和控制的问题:winscok和程序生成的EXE文件如何不用安装而可以直接运行??
- vb中怎样进行事务处理?
- 关于SQLSERVER 的远程访问。UP者也有分
- vb读取excel问题
- 关于chm帮助文件,在vb中需要的HelpContextID在chm文件的那个地方指定?
- 关于vb6乱码的问题。
- 急急急急急急急急急急急急急急急急急急急急急急急急,VB相对路径奇怪一问,急急急急急急急急急急急急急急急急急急??
- ADO数据控件不好用
Select Case Index
Case 0
AdjustToken
Call ExitWindowsEx(EWX_LOGOFF, 0) '注销
End
Case 1
AdjustToken
Call ExitWindowsEx(EWX_POWEROFF, 0)
Call ExitWindowsEx(EWX_SHUTDOWN, 0) '关机
End
Case 2
AdjustToken
Call ExitWindowsEx(EWX_REBOOT, 0) '重启
End
Case 3
Unload Me
'取消
End SelectEnd Sub
ByVal dwReserved As Long) As LongEnum HowExitConst
EWX_FORCE = 4 ' 强制关机
EWX_LOGOFF = 0 ' 登出
EWX_REBOOT = 2 ' 重开机
EWX_SHUTDOWN = 1 ' 关机
EWX_POWEROFF = 8
End EnumConst TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2
Const ANYSIZE_ARRAY = 1Private Type LUID
lowpart As Long
highpart As Long
End TypePrivate Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End TypePrivate Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End TypePrivate Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias _
"LookupPrivilegeValueA" (ByVal lpSystemName As String, _
ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" _
(ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _
NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _
PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" _
(ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As LongPrivate Sub AdjustToken()
'因为 98以上的机器存在一个安全机制的问题 这个就是处理安全机制问题的代码
Dim hdlProcessHandle As Long
Dim hdlTokenHandle As Long
Dim tmpLuid As LUID
Dim tkp As TOKEN_PRIVILEGES
Dim tkpNewButIgnored As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
hdlProcessHandle = GetCurrentProcess()
OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), _
hdlTokenHandle
LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
tkp.PrivilegeCount = 1
tkp.Privileges(0).pLuid = tmpLuid
tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), _
tkpNewButIgnored, lBufferNeeded
End Sub
Private Sub Label1_Click(Index As Integer)
'该代码可以关闭所以的windows系统
Select Case Index
Case 0
AdjustToken
Call ExitWindowsEx(EWX_LOGOFF, 0) '注销
End
Case 1
AdjustToken
Call ExitWindowsEx(EWX_POWEROFF, 0)'对付98不能关机
Call ExitWindowsEx(EWX_SHUTDOWN, 0) '关机
End
Case 2
AdjustToken
Call ExitWindowsEx(EWX_REBOOT, 0) '重启
End
Case 3
Unload Me
'取消
End SelectEnd Sub