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 的关机代码的更多相关文章

  1. C#实现注销、重启和关机代码

    首先要导入对命名空间 using System.Runtime.InteropServices; 的引用 [StructLayout(LayoutKind.Sequential, Pack = 1)] ...

  2. VB6 如何自定义代码字体和支持鼠标滚轮

    1 点击工具-选项-编辑器格式,把代码改成需要的字体和大小.(一般微软雅黑,16号字体比较好)   2 从以下网站下载VB6增强工具,可以支持鼠标滚轮代替右侧滚动条查看代码,按F3还可以切换代码窗口和 ...

  3. 用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠

    简介 本文讲述了用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠. 如何实现 首先,使用 using 语句添加我们需要的命名空间: using System.Diagnostics; ...

  4. VB6 代码编辑页面添加支持滚轮模式

    VB6 中的代码编辑页面默认是不支持滚轮模式的,这让在编辑代码时的体验很是不爽. 但在64位win10系统进行加载配置时,可能会出现问题,可用如下方法解决: http://download.micro ...

  5. 吐个槽,对VB6.0 还有VBS 说ByeBye

    往事不堪回首,折腾了个把月的老系统,心中郁结,不吐不快.系统架构是ASP +VBS +VB6.0 + SQL Server2000, 第一个版本开发完成大概是在2000年.基本是处于交接无力,看代码就 ...

  6. VB6.0调用DLL

    目录 第1章 VB6.0调用DLL    1 1 VC++编写DLL    1 1.1 使用__stdcall    1 1.2 使用 .DEF 文件    1 2 简单数据类型    2 2.1 传 ...

  7. VB6之Mandelbrot集

    Mandelbrot真是上帝之作,数学之美最直观的表现. 围观wiki和百科(百度百科)上关于Mandelbrot的解释至今仍是不能理解,没办法我高数实在学得不好. 搜素到园友用F#写的一篇实现代码, ...

  8. python:基于tkinter的定时关机程

    本人使用python3 from tkinter import* import os from PIL import Image, ImageTk root=Tk() a=Label(root,tex ...

  9. c# 自动关机代码

    #region 关机代码 //C#关机代码 // 这个结构体将会传递给API.使用StructLayout //(...特性,确保其中的成员是按顺序排列的,C#编译器不会对其进行调整. [Struct ...

随机推荐

  1. UVA-536 Tree Recovery (二叉树遍历)

    题目大意:给出对一棵二叉树先序遍历和中序遍历的顺序,找出后序遍历的顺序. 题目分析:无非就是对字符串的输出顺序做个变化,递归就行了. 代码如下: # include<iostream> # ...

  2. Zabbix SNMP OID discovery,自动发现

    Unlike file system and network interface discovery, the item does not necessarily have to have “snmp ...

  3. bzoj2594

    题解: lct维护最小生成树 首先,先对于每一条边,生成一个点,这个点连接这一条边的两个端点 点的值为边的权值 其他点的权值都是0 那么每一次查找i-j路径上面最小值,就变成查找树上路径点权最小值 按 ...

  4. MMAP文件内存映射

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  5. Robot Framework中使用HttpLibrary教程and中文支持

    Robot Framework中使用and转参数时,默认不支持中文模式,如图场景: 会出现这种错误 FAIL : UnicodeDecodeError: 'ascii' codec can't dec ...

  6. Http协议——Header说明

    下图是我用IE的开发人员工具截取的一个Http Request请求的Header. 下图是我用IE的开发人员工具截取的一个Http Response的Header. header常用指令 header ...

  7. tensorflow中 tf.reduce_mean函数

    tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值. reduce_mean(input_ ...

  8. ImageNet 历届冠军最新评析:哪个深度学习模型最适合你?

    原文链接: https://mp.weixin.qq.com/s/I5XgYrPCCGyfV2qTI0sJhQ 深度神经网络自出现以来,已经成为计算机视觉领域一项举足轻重的技术.其中,ImageNet ...

  9. MacBook下配置android adb命令使用环境

    想在Mac下使用android adb命令,常用的两种配置方式: 在MacBook下配置adb命令环境(方法一) 1.下载并安装IDE (android studio) 人性化的安装,直接点击下一步下 ...

  10. endnote x7 破解版 关联word2010/2013

    方法/步骤   1 首先在已安装EndnoteX7的条件下,打开word2013在工具栏上方未见“EndnoteX7”标识,则需要将两者关联. 2 打开word左上角的“文件”,然后点开“选项” 3 ...