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. 基于Oracle的SQL优化(崔华著)-学习笔记

    201704171025 01. 列rows记录的就是执行计划中每一个执行步骤所对应的Cardinality的值 列Cost(%CPU)记录的就是执行计划中的每一个执行步骤对应的成本 02. Comp ...

  2. 使用Pandas: str.replace() 进行文本清洗

    前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...

  3. New Concept English Two 4

    听力口语是一起的,其中,受中国英语发音的影响,我们的听力识别度会很差,歪果仁发的地道英语,极有可能我们听不懂.这涉及到:自然拼读法的训练,还有纠音练习.当然,听简单的美剧的音频,然后练习是最好的. 新 ...

  4. Memcached介绍及相关知识

    memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...

  5. 判断一棵树是否为二叉搜索树(二叉排序树) python

    输入一棵树,判断这棵树是否为二叉搜索树.首先要知道什么是排序二叉树,二叉排序树是这样定义的,二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的 ...

  6. 通过iframe 实现upload file无刷新

    <html>    <head> </head> <body> <form encType="multipart/form-data&q ...

  7. Laravel学习之旅(一)

    路由 1.简介:简单的说就是将用户的请求转发给相应的程序进行处理: 2.作用:就是建立url和程序之间的映射. 3.请求类型:get.post.put.patch.delete 相比于thinkphp ...

  8. sysfs文件系统学习--sysfs

    一.sysfs简介1.sysfs就是利用VFS的接口去读写kobject的层次结构,建立起来的文件系统.其更新与删除是那些xxx_register()/unregister()做的事 情.从sysfs ...

  9. streamsets redis destinations 使用

    测试集成了directory(excel) 以及redis && field splitter 组件 pipeline flow docker-compose 配置 redis 服务& ...

  10. 【Xamarin】Visual Studio 2013 Xamarin for Android开发环境搭建与配置&Genymotion

    Xamarin Xamarin是基于Mono的平台. Xamarin旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 下载资源 1,进入Xamarin官方网 ...