| 
| 
 | Вопрос # 840/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!У меня такая проблема. Хочу написать программу по выводу компьютера из "спящего"  режима и, соответственно, вводу его в этот летаргический сон....
 Не подскажите КАК мне это сделать?! а?!
 
 Может как-нибудь можно использовать планировщик, встроенный в Винду?! Буду рад, если скажете как им управлять из-под Дельфи!
 
|  |   Вопрос задал: Grin (статус: Посетитель)Вопрос отправлен: 9 августа 2007, 04:06
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Градов Ю.М. Здравствуйте, Grin!В приложении фрагмент кода для перевода ПК в спящий режим. Также можно выполнить из Delphi файл, как описано ниже:
 Управление параметрами электропитания из командной строки
 Возможно, вам пригодится знание как можно выключить компьютер, перезагрузить, выйти из системы, перейти в ждущий режим из командной строки. Также эти команды могут быть использованы в пакетных файлах или качестве параметров ярлыков.
 
 rundll32.exe powrprof.dll,setsuspendstate - переход в спящий режим
 rundll32.exe user32.dll,lockworkstation - выход из системы
 
 Также можно использовать команду shutdown - эта команда позволяет выключать или перезапускать локальный или удаленный компьютер. Параметры:
 
 shutdown [-l] [-s] [-r| [-a] [-f] [-m [\\имя_компьютера]] [-t xx] [-c "сообщение"]
 - l осуществляет выход текущего пользователя из системы;
 -s выключает локальный компьютер;
 -r выполняет перезагрузку;
 -f принудительно закрывает выполняющиеся приложения;
 -m [\\имя_компьютера] указывает компьютер, который требуется выключить;
 -t xx устанавливает таймер завершения работы системы на xx секунд. По умолчанию это время составляет 20 секунд. Если значение xx указать равным "0" то окно закрытия выводиться не будет;
 -c "сообщение" задает сообщение, выводящееся в области «Сообщение» в окне «Завершение работы системы». Можно использовать до 127 знаков. Текст сообщения должен быть заключен в прямые кавычки.
 При использовании команды shutdown -i будет отображен интерфейс программы завершения работы.
 
 Пример (выключаем компьютер через 40 секунд с выводом сообщения):
 shutdown -s -t 40 -c "Тестовое выключение компьютера"
 
 Замечу, что все возможности команды shutdown доступны пользователю с правами администратора, обычный пользователь может использовать лишь ключ -l, то есть выход из системы. Чтобы разрешить пользователям использовать все возможности команды shutdown, нужно воспользоваться оснасткой "Локальная политика безопасности" (..\windows\system32\secpol.msc). Перейдите в раздел "Локальные политики - Назначение прав пользователя - Принудительное удаленное завершение" и добавьте пользователя или группу пользователей, для которых вы хотите задать разрешение.
 
 Другая команда - tsshutdn служит для завершения работы сервера.
 Параметры:
 
 tsshutdn [wait_time] [/server:servername] [/reboot] [/powerdown][/delay:logoffdelay] [/v]
 wait_time задержка в секундах после уведомления пользователей до прекращения их сеансов (по умолчанию 60 секунд);
 /server:servername завершающий работу сервер (по умолчанию текущий);
 /reboot перезагрузка сервера после прекращения всех сеансов;
 /powerdown подготовка сервера к отключению питания;
 /delay:logoffdelay задержка в секундах после прекращения всех подключенных сеансов (по умолчанию 30 секунд);
 /v вывод сообщений о выполняемых действиях;
 Команда tsshutdn без параметров завершит работу сервера через 1 минуту.
 
 Пример использования (выключение компьютера, таймаут ="0" секунд)
 tsshutdn 0 /powerdown /delay:0
 Приложение:Переключить в обычный режим procedure NTSleep;var  hToken: THandle;  tkp: TTokenPrivileges;  ReturnLength: Cardinal;begin  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or    TOKEN_QUERY, hToken) then  begin    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);    tkp.PrivilegeCount := 1;    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;    if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then      SetSystemPowerState(true, true);  end;end; 
|  | Ответ отправил: Градов Ю.М. (статус: 8-ой класс)Время отправки: 9 августа 2007, 13:57
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |