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. Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

    Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...

  2. Page.TryUpdateModel 方法

    使用来自值提供程序的值更新指定的模型实例. 使用来自值提供程序的值更新指定的模型实例. 命名空间:   System.Web.UI程序集:  System.Web(System.Web.dll 中) ...

  3. jQuery.prop() 函数详解

    prop()函数用于设置或返回当前jQuery对象所匹配的元素的属性值. 该函数属于jQuery对象(实例).如果需要删除DOM元素的属性,请使用removeProp()函数. 语法jQuery 1. ...

  4. POJ 3126 primepath bfs

    题目链接:http://poj.org/problem?id=3126 题意:1维的坐标轴,给出起点和终点,求从起点到终点变换经历的最短的步数.起点,终点和中间变换的数字都是4位,而且都是质数. 思路 ...

  5. linux 命令 --while

    shell while 语法: while [条件判断式] do 程序 done 对 while 循环来讲,只要条件判断式成立,循环就会一直进行,直到条件判断式不成立,循环才会停止. 例如: 循环从1 ...

  6. SQL 字符串拆分

    字符串拆分: ALTER FUNCTION [dbo].[f_Split](@sText nvarchar(max),@split NVARCHAR(20)) RETURNS @t TABLE (id ...

  7. New Concept English Two 24 64

    $课文62  大火之后 650. Firemen had been fighting the forest for nearly three weeks before they could get i ...

  8. show()是非模式窗体. showDialog()是模式窗体.

    show()仅仅是显示出来窗口界面而已```也就是和你执行的结果在同一窗口显示```所显示的窗口可以在后台运行```而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不 ...

  9. 打造基于jQuery的日期选择控件

    终于把jQuery拼写正确了哈,哈哈javascript也是区分大小写的,所以确实不能写错,今天我来和大家分享的是日期选择控件的实现,功能也许不够强大,但是能够满足需求. 我之前也写过(正确的说是改过 ...

  10. VsCode中运行nodeJs代码的简单方法

    VsCode安装包默认内置的node debug插件需要配置工程调试运行文件才能正常运行,对于想要运行一个简单的js文件或者就是一段js代码时比较麻烦,为此可以安装Code Runner插件 安装完后 ...