Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2007, 23:28   #1
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию выключение, перезагрузка компьютера

Подскажите команды выключения, перезагрузки, ждущего режима, спящего режима Windows XP.

Команды типа Windows.EWX_REBOOT что-то не работают, или они не под XP?
Подскажите работающие команды
ATL вне форума Ответить с цитированием
Старый 14.05.2007, 01:27   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 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;
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 14.05.2007, 21:19   #3
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

А как прописать это в ComboBox ?

Подставить нужно сюда вместо пустого места:
Код:
   case ComboBox1.ItemIndex of
    0:           // Завершение сеанса
    1:           // Ждущий режим
    2:           // Спящий режим
    3:           // Перезагрузка ПК
    4:           // Выключение ПК
   end;
ATL вне форума Ответить с цитированием
Старый 15.05.2007, 00:23   #4
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 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;

Остальное не вспомню.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 16.05.2007, 01:57   #5
ATL
Форумчанин
 
Аватар для ATL
 
Регистрация: 26.01.2007
Сообщений: 278
По умолчанию

Спасибо большое!
ATL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезагрузка компьютера 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