C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Спящий режим  (Прочитано 2829 раз)
47
Гость
« : 24 января 2009, 18:01:51 »

Подскажите пожалуста!
Как програмно отправить КОМПЬЮТЕР в "Спящий режим"?
Записан
VerZer
Участник
**

Сказали спасибо: +92/-10
Offline Offline

Сообщений: 1139


« Ответ #1 : 24 января 2009, 19:11:44 »

http://msdn.microsoft.com/en-us/library/aa373201(VS.85).aspx
Записан
Yurkins
Участник
**

Сказали спасибо: +36/-3
Offline Offline

Сообщений: 368


« Ответ #2 : 25 января 2009, 01:05:04 »

вот что у меня получилось 3-4 года назад.
Код
//---------------------------------------------------------------------------
const Shutdown=1, Restart=2, LoginOff=3, StandBy=4, Hibernate=5;
//---------------------------------------------------------------------------
void ysExitWindows(const int Action, const bool ForceCritical=true)
{
 if (Win32Platform == VER_PLATFORM_WIN32_NT)
 {
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
 }
 switch(Action)
 {
case Shutdown :
ExitWindowsEx(ForceCritical ? (EWX_SHUTDOWN | EWX_FORCE) : (EWX_SHUTDOWN ), 0);
break;
case Restart :
ExitWindowsEx(ForceCritical ? (EWX_REBOOT | EWX_FORCE) : (EWX_REBOOT), 0);
break;
case LoginOff :
ExitWindowsEx(ForceCritical ? (EWX_LOGOFF | EWX_FORCE) : (EWX_LOGOFF), 0);
break;
case StandBy:
SetSystemPowerState(true , ForceCritical);
break;
case Hibernate :
SetSystemPowerState(false, ForceCritical);
break;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm5::btn1Click(TObject *Sender)
{
 ysExitWindows(StandBy);
}
//---------------------------------------------------------------------------
 
Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: