Страница: 1 |
Этот(или похожий) вопрос был,но ответа вроде нет. Выключить так,чтобы не было надписи "Вы можете выкл.комп."
Это ссылки которые я за минуту нашел с помощью ПОИСКА ПО ФОРУМУ http://www.vbnet.ru/forum/show.asp?id=5032 http://www.vbnet.ru/forum/show.asp?id=5734 http://www.vbnet.ru/forum/show.asp?id=8994 http://vbnet.ru/sample/sampledownload.asp?id=92 http://www.vbnet.ru/forum/show.asp?id=11133 http://www.vbnet.ru/forum/show.asp?id=16614 УДАЧИ Я тоже один раз с этой проблемой столкнулся: Private Type LUID LowPart As Long HighPart As Long End Type Private Type TOKEN_PRIVILEGES PrivilegeCount As Long LuidUDT As LUID Attributes As Long End Type Const TOKEN_ADJUST_PRIVILEGES = &H20 Const TOKEN_QUERY = &H8 Const SE_PRIVILEGE_ENABLED = &H2 Const EWX_SHUTDOWN = 1 Const EWX_REBOOT = 2 Const EWX_FORCE = 4 Const ewx_off = 8 Private Declare Function GetVersion Lib "kernel32" () 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 Any, ReturnLength As Any) As Long Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long Function ShutDownWindows(ByVal Reboot As Boolean, Optional ByVal Force As Boolean, Optional ByVal off As Boolean) Dim hToken As Long Dim tp As TOKEN_PRIVILEGES Dim flags As Long 'Windows NT/2000/XP òðåáóåò ñïåöèàëüíîãî ïîäòâåðæäåíèÿ òîãî, '÷òî âûçûâàþùèé ïðîöåññ èìååò ïðàâî íà âûêëþ÷åíèå èëè ïåðåçàãðóçêó êîìïüþòåðà If GetVersion() >= 0 Then 'Îòêðûâàåì ïðîöåññ äëÿ óñòàíîâêè íóæíûõ ïðèâèëåãèé OpenProcessToken GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hToken 'Óñòàíàâëèâàåì íåîáõîäèìûå ïðèâèëåãèè ïðîöåññà LookupPrivilegeValue "", "SeShutdownPrivilege", tp.LuidUDT tp.PrivilegeCount = 1 tp.Attributes = SE_PRIVILEGE_ENABLED AdjustTokenPrivileges hToken, False, tp, 0, ByVal 0&, ByVal 0& End If 'Ïîäãîòîâêà ê âûêëþ÷åíèþ flags = EWX_SHUTDOWN If Reboot Then flags = flags Or EWX_REBOOT If Force Then flags = flags Or EWX_FORCE If off Then flags = flags Or ewx_off 'Âûêëþ÷åíèå èëè ïåðåçàãðóçêà êîìïà ExitWindowsEx flags, &HFFFF End Function Private Sub Command1_Click() On Error GoTo error1 ShutDownWindows(False, True, True) = True error1: If Err <> 0 Then End If End Sub To ноликX: Хе-хе, а ты однако слепой. А Const ewx_off=8 тебе ничего не говорит? To Serega : Спасибо, всё заработало! Вся фишка - Const ewx_off = 8 Страница: 1 |
Вопрос: Как програмно выключить ХР ?
Добавлено: 14.08.03 02:15
Автор вопроса: Alperium
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #1
Добавлено: 14.08.03 07:16
Номер ответа: 2
Автор ответа:
Serega
Вопросов: 6
Ответов: 7
Профиль | | #2
Добавлено: 14.08.03 09:09
Номер ответа: 3
Автор ответа:
ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #3
Добавлено: 14.08.03 10:26
Ребята вы когда нить документацию по API читали, там БОЛЬШИМИ БУКВАМИ написано для NT нужно использовать константу EWX_POWEROFF=8, выключение с поддержкой ACPI, т. е. ATX
Номер ответа: 4
Автор ответа:
Serega
Вопросов: 6
Ответов: 7
Профиль | | #4
Добавлено: 14.08.03 10:39
Номер ответа: 5
Автор ответа:
Alperium
Вопросов: 9
Ответов: 18
Профиль | | #5
Добавлено: 17.08.03 01:18