Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как програмно выключить ХР ? Добавлено: 14.08.03 02:15  

Автор вопроса:  Alperium

Этот(или похожий) вопрос был,но ответа вроде нет.

Выключить так,чтобы не было надписи "Вы можете выкл.комп."

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Grayich



ICQ: 208280504 

Вопросов: 56
Ответов: 164
 Web-сайт: grayich.narod.ru
 Профиль | | #1
Добавлено: 14.08.03 07:16

Это ссылки которые я за минуту нашел с помощью ПОИСКА ПО ФОРУМУ :)

 

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

 

УДАЧИ

Ответить

Номер ответа: 2
Автор ответа:
 Serega



Вопросов: 6
Ответов: 7
 Профиль | | #2 Добавлено: 14.08.03 09:09

Я тоже один раз с этой проблемой столкнулся:

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

Ответить

Номер ответа: 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

To ноликX: Хе-хе, а ты однако слепой. А Const ewx_off=8 тебе ничего не говорит?

Ответить

Номер ответа: 5
Автор ответа:
 Alperium



Вопросов: 9
Ответов: 18
 Профиль | | #5 Добавлено: 17.08.03 01:18

To Serega :

Спасибо, всё заработало!

Вся фишка - Const ewx_off = 8

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам