| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1097 人关注过本帖
标题:vb自动关机
取消只看楼主 加入收藏
ytsm0526
Rank: 2
来 自:西安市
等 级:论坛游民
威 望:2
帖 子:203
专家分:60
注 册:2007-10-28
结帖率:100%
收藏
 问题点数:0 回复次数:1 
vb自动关机

'以下为模块代码
Option Explicit

Public Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type

Public Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type

'Beginning of Code

Public Const EWX_SHUTDOWN As Long = 1
Public Const EWX_FORCE As Long = 4
'重起
Public Const EWX_REBOOT = 2
'关机
Public Const EWX_POWEROFF = 8

Public Declare Function ExitWindowsEx Lib "user32" ( _
ByVal dwOptions As Long, ByVal dwReserved As Long) As Long

Public Declare Function GetCurrentProcess Lib "kernel32" () As Long

Public Declare Function OpenProcessToken Lib "advapi32" ( _
ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long

Public Declare Function LookupPrivilegeValue Lib "advapi32" _
Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, _
ByVal lpName As String, lpLuid As LUID) As Long

Public Declare Function AdjustTokenPrivileges Lib "advapi32" ( _
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

Public Sub AdjustToken()

Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2

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

' Get the LUID for shutdown privilege.

LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
tkp.PrivilegeCount = 1 ' One privilege to set
tkp.TheLuid = tmpLuid
tkp.Attributes = SE_PRIVILEGE_ENABLED
' Enable the shutdown privilege in the access token of this
' process.
AdjustTokenPrivileges hdlTokenHandle, False, tkp, _
Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
End Sub

在窗体中加入一个DTPicker控件和一个Timer控件
设置CheckBox属性为True,格式定为:HH:mm
设置Time的Enable属性为True,Interval属性5000。(可自己更改)
Change事件加入代码
If IsNull(DTP.Value) Then
'MsgBox "null"
SaveSetting "RealTimeReadCard", "Set", "AutosdTime", "0"
Timer2.Enabled = False
Else
'MsgBox DTP.Value
SaveSetting "RealTimeReadCard", "Set", "AutosdTime", DTP.Value
Timer2.Enabled = True
Sd_temp = DTP.Value
End If
Form的Load事件加入
Sd_temp = GetSetting("RealTimeReadCard", "Set", "AutosdTime", "")
If Sd_temp = "0" Or Sd_temp = "" Then
DTP.Value = Null
Else
DTP.Value = Sd_temp
End If
Timer事件加入
If Sd_temp <> "" Then
If Left(Sd_temp, Len(Sd_temp) - 3) = Left(Time, Len(Time) - 3) Then
AdjustToken
'ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), &HFFFF
ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_POWEROFF), &HFFFF
End If
End If

本程序适合win98,nt,2000,xp,2003系统。

搜索更多相关主题的帖子: 自动 
2007-10-28 11:00
ytsm0526
Rank: 2
来 自:西安市
等 级:论坛游民
威 望:2
帖 子:203
专家分:60
注 册:2007-10-28
收藏
得分:0 
同志们你们光看不会,太不行了

作舍道边,三年不成。
多抽出一分钟时间学习,让你的生命更加精彩!,
2007-10-28 11:17
快速回复:vb自动关机
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027682 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved