vb6 的关机代码
Public Const SE_PRIVILEGE_ENABLED As Integer = &H2
Public Const
TOKEN_QUERY As Integer = &H8
Public Const TOKEN_ADJUST_PRIVILEGES As
Integer = &H20
Public Const SE_SHUTDOWN_NAME As String =
"SeShutdownPrivilege"
Public Const EWX_LOGOFF As Integer = &H0
'注销计算机
Public Const EWX_SHUTDOWN As Integer = &H1 '关闭计算机
Public Const
EWX_REBOOT As Integer = &H2 '重新启动计算机
Public Const EWX_FORCE As Integer =
&H4 '关闭所有进程,注销计算机
Public Const EWX_POWEROFF As Integer =
&H8
Public Const EWX_FORCEIFHUNG As Integer = &H10
Public Const
SPI_GETWORKAREA = &H30
Private Type Luid
dwLowPart As Long
dwHighPart As Long
End
Type
Private Type LUID_AND_ATTRIBUTES
udtLUID As Luid
dwAttributes
As Long
End Type
Private Type TokPriv1Luid
Count As Integer
Luid As Luid
Attr As Integer
End Type
Private Declare Function ExitWindowsEx Lib "user32" _
(ByVal dwOptions As
Long, _
ByVal dwReserved As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" _
(ByVal
ProcessHandle As Long, _
ByVal DesiredAccess As Long, _
TokenHandle As
Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" _
Alias
"LookupPrivilegeValueA" _
(ByVal lpSystemName As String, _
ByVal lpName As
String, _
lpLuid As Luid) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" _
(ByVal
TokenHandle As Long, _
ByVal DisableAllPrivileges As Long, _
NewState As
TokPriv1Luid, _
ByVal BufferLength As Long, _
PreviousState As Any,
_
ReturnLength As Long) As Long
Private Sub DoExitWin(ByVal flg As Integer)
Dim xc As Boolean
'判断语句
Dim tp As TokPriv1Luid
Dim hproc As Long
hproc =
GetCurrentProcess()
'调用进程值
Dim htok As Long
htok =
0
xc = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES Or
TOKEN_QUERY, htok)
tp.Count = 1
tp.Attr =
SE_PRIVILEGE_ENABLED
xc = LookupPrivilegeValue(vbNullString,
SE_SHUTDOWN_NAME, tp.Luid)
xc = AdjustTokenPrivileges(htok, False, tp,
ByVal 0&, ByVal 0&, ByVal 0&)
xc = ExitWindowsEx(flg,
0)
End Sub
Public Sub Reboot()
Dim flg As Integer
flg = EWX_FORCE Or
EWX_REBOOT
DoExitWin flg '重新启动计算机
End Sub
Public Sub PowerOff()
Dim flg As Integer
flg = EWX_FORCE Or
EWX_POWEROFF
DoExitWin flg '关闭计算机
End Sub
Public Sub Logout()
Dim flg As Boolean
flg = EWX_FORCE Or
EWX_LOGOFF
DoExitWin flg '注销计算机
End Sub
vb6 的关机代码的更多相关文章
- C#实现注销、重启和关机代码
首先要导入对命名空间 using System.Runtime.InteropServices; 的引用 [StructLayout(LayoutKind.Sequential, Pack = 1)] ...
- VB6 如何自定义代码字体和支持鼠标滚轮
1 点击工具-选项-编辑器格式,把代码改成需要的字体和大小.(一般微软雅黑,16号字体比较好) 2 从以下网站下载VB6增强工具,可以支持鼠标滚轮代替右侧滚动条查看代码,按F3还可以切换代码窗口和 ...
- 用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠
简介 本文讲述了用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠. 如何实现 首先,使用 using 语句添加我们需要的命名空间: using System.Diagnostics; ...
- VB6 代码编辑页面添加支持滚轮模式
VB6 中的代码编辑页面默认是不支持滚轮模式的,这让在编辑代码时的体验很是不爽. 但在64位win10系统进行加载配置时,可能会出现问题,可用如下方法解决: http://download.micro ...
- 吐个槽,对VB6.0 还有VBS 说ByeBye
往事不堪回首,折腾了个把月的老系统,心中郁结,不吐不快.系统架构是ASP +VBS +VB6.0 + SQL Server2000, 第一个版本开发完成大概是在2000年.基本是处于交接无力,看代码就 ...
- VB6.0调用DLL
目录 第1章 VB6.0调用DLL 1 1 VC++编写DLL 1 1.1 使用__stdcall 1 1.2 使用 .DEF 文件 1 2 简单数据类型 2 2.1 传 ...
- VB6之Mandelbrot集
Mandelbrot真是上帝之作,数学之美最直观的表现. 围观wiki和百科(百度百科)上关于Mandelbrot的解释至今仍是不能理解,没办法我高数实在学得不好. 搜素到园友用F#写的一篇实现代码, ...
- python:基于tkinter的定时关机程
本人使用python3 from tkinter import* import os from PIL import Image, ImageTk root=Tk() a=Label(root,tex ...
- c# 自动关机代码
#region 关机代码 //C#关机代码 // 这个结构体将会传递给API.使用StructLayout //(...特性,确保其中的成员是按顺序排列的,C#编译器不会对其进行调整. [Struct ...
随机推荐
- log4j日志文件配置
### set log levels ### ### debug (打印代码中logger.debug(xx)的信息)> info(打印代码中logger.info(xx)的信息) log4j. ...
- vscode golang插件下载
此处是windows,linux操作类似 进行如下命令进行目录切换:cd %GOPATH%\src\github.com\golang我这里的GOPATH是在D:\go_project如果src目录下 ...
- cn_office_Professional_Plus_2010_vol_with_sp2-【x86+x64仅2.45GB】
用官方sp2补丁在cn_office_Professional_Plus_2010_vol基础上集成,无其他任何添加及修改! 文件: cn_office_Professional_Plus_2010_ ...
- 201621123005《Java程序设计》第九次实验总结
201621123005<Java程序设计>第九周实验总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 ...
- linux磁盘分区格式化-fdisk命令工具
本文主要讲述使用fdisk工具对磁盘进行分区和格式化的方法 首先要明确分区是针对磁盘进行的操做,磁盘分区会创建分区表,类似vda,sda的是磁盘,vda1,sda1的是分区 1.查看磁盘分区状态 1. ...
- tar格式 方法安装MySQL后,初次登录出现 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement
参考: https://www.cnblogs.com/kerrycode/p/4368312.html http://blog.csdn.net/u014520039/article/details ...
- 《DSP using MATLAB》Problem 2.16
先由脉冲响应序列h(n)得到差分方程系数,过程如下: 代码: %% ------------------------------------------------------------------ ...
- Python面试题(十六)
1.取出两个升序数组中的最小的一半的元素组成一个新的升序数组. map(lambda x, y: x if x < y else y, a, b) 答案 2.用至少2种不同的方式删除一个list ...
- 【传输协议】发送https请求,由于客户端jdk版本过高,服务端版本低。导致异常:javax.net.ssl.SSLHandshakeException: Server chose SSLv3, but that protocol version is not enabled or not supported by the client.
本地环境jdk为1.8,服务器使用jdk版本未知.但发送https请求,抛出如下异常,解决方案. 一:发送异常内容如下 javax.net.ssl.SSLHandshakeException: Ser ...
- 使用nomad && consul && fabio 创建简单的微服务系统
具体每个组件的功能就不详细说明了 nomad 一个调度工具,consul 一个服务发现,健康检查多数据中心支持的工具 fabio 一个基于consul的负载均衡&&动态路由工具,对于集 ...