|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2007, 23:28 | #1 |
Форумчанин
Регистрация: 26.01.2007
Сообщений: 278
|
выключение, перезагрузка компьютера
Подскажите команды выключения, перезагрузки, ждущего режима, спящего режима Windows XP.
Команды типа Windows.EWX_REBOOT что-то не работают, или они не под XP? Подскажите работающие команды |
14.05.2007, 01:27 | #2 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
На, пользуйся.
procedure TForm1.Button1Click(Sender: TObject); var hproc, htoken: THandle; ht: cardinal; luid: int64; luidattr: LUID_AND_ATTRIBUTES; priv: Token_Privileges; r: DWORD; res: BOOL; dal: LongBool; buf: PChar; begin hProc:=GetCurrentProcess; hToken:=0; OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES, hToken); LookupPrivilegeValue(nil, 'SeShutDownPrivilege', luid); luidattr.Luid := luid; luidattr.Attributes:=SE_PRIVILEGE_E NABLED; priv.PrivilegeCount:=1; priv.Privileges[0]:=luidattr; r:=0; res:=AdjustTokenPrivileges(hToken, false, priv, 0, nil, r); ExitWindowsEx(EWX_Shutdown+EWX_POWE ROFF,0); end;
Не надо ничего усложнять. Все достаточно тривиально.
|
14.05.2007, 21:19 | #3 |
Форумчанин
Регистрация: 26.01.2007
Сообщений: 278
|
А как прописать это в ComboBox ?
Подставить нужно сюда вместо пустого места: Код:
|
15.05.2007, 00:23 | #4 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
Сперва устанавливаешь привилегии, а потом прописываешь в свой case нужный флаг вот так:
procedure TForm1.Button1Click(Sender: TObject); var hproc, htoken: THandle; ht: cardinal; luid: int64; luidattr: LUID_AND_ATTRIBUTES; priv: Token_Privileges; r: DWORD; res: BOOL; dal: LongBool; buf: PChar; begin hProc:=GetCurrentProcess; hToken:=0; OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES, hToken); LookupPrivilegeValue(nil, 'SeShutDownPrivilege', luid); luidattr.Luid := luid; luidattr.Attributes:=SE_PRIVILEGE_E NABLED; priv.PrivilegeCount:=1; priv.Privileges[0]:=luidattr; r:=0; res:=AdjustTokenPrivileges(hToken, false, priv, 0, nil, r); case ComboBox1.ItemIndex of 0: // ExitWindowsEx(EWX_LOGOFF,0); 1: // Ждущий режим 2: // Спящий режим 3: // ExitWindowsEx(EWX_REBOOT,0); 4: // ExitWindowsEx(EWX_Shutdown+EWX_POWE ROFF,0); end; end; Остальное не вспомню.
Не надо ничего усложнять. Все достаточно тривиально.
|
16.05.2007, 01:57 | #5 |
Форумчанин
Регистрация: 26.01.2007
Сообщений: 278
|
Спасибо большое!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перезагрузка компьютера | antoha.by | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 04.08.2008 09:39 |
Выключение компьютера | aesoem | Общие вопросы Delphi | 2 | 03.07.2008 16:50 |
Выключение и перезагрузка | Патрон | Win Api | 8 | 26.03.2008 16:24 |
Выключение/Перезагрузка в Vista | Veiron | Общие вопросы Delphi | 5 | 13.01.2008 09:35 |
выключение компьютера | Svop | Общие вопросы Delphi | 23 | 18.12.2006 22:57 |