Re: [VB6 ] 強制關機

看板Visual_Basic作者 (原po比較老)時間19年前 (2005/10/06 00:53), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《rosemary (原po比較老)》之銘言: : ※ 引述《kucal (乖小孩)》之銘言: : : 有一個很基本的問題想請教一下板上的大大們 : : 有沒有任何指令可以強制關機而不顯示任何訊息呢 : : 心得筆記中教的是顯示出關機對話窗 可是小弟想直接將整台電腦關掉 : : 不知有何方法 : 非winNT系列的有API可以使用 : 去GOOGLE搜尋 "EWX_SHUTDOWN " : 應該可以找到您要的答案 http://support.ceci.org.tw/directory/worldwide/zh-tw/faq/1841.htm#32 在VB implement shutdown Windows95,Windows98,Windows NT (經測試xp會重開機) Option Explicit Private Type LUID UsedPart As Long IgnoredForNowHigh32BitPart As Long End Type Private Type TOKEN_PRIVILEGES PrivilegeCount As Long TheLuid As LUID Attributes As Long End Type ' Beginning of Code Private Const EWX_SHUTDOWN As Long = 1 Private Const EWX_FORCE As Long = 4 Private Const EWX_REBOOT = 2 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 TOKEN_PRIVILEGES, ByVal BufferLength As Long, _ PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long Private 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 Private Sub cmdForceShutdown_Click() AdjustToken ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), &HFFFF End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.12.23

10/06 17:48, , 1F
感謝
10/06 17:48, 1F
文章代碼(AID): #13H0KWng (Visual_Basic)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
5
7
文章代碼(AID): #13H0KWng (Visual_Basic)