|
Вопрос # 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
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|