Ценность этой статьи скорее не в самом решении, а в напоминании как можно быстро решать простые задачи.
Но если Вам нужно простое решение — пожалуйста:
Сохраните в CMD эти строки и после запуска через 20 минут (1200 секунд) компьютер перейдет в спящий режим. Итого программа заняла 73 байт:
ping 127.0.0.1 -n 1201 > nul
rundll32 powrprof.dll,SetSuspendState 0,1,0
Но если Вам нужно именно выключить, то всё будет еще короче, а именно 47 байт. Просто вторая строка будет выглядеть:
shutdown -s -t 00
Использую это перед сном, включая свое любимое онлайн радио «на сон грядущий» так же из командной строки, о чём будет рассказано под катом.
Кому все таки стало любопытно, прошу под кат. Ссылки на готовые скрипты в конце статьи.
В большинстве своем всё новое это хорошо забытое старое.
Сначала рассмотрим что делают эти строки:
Пингуем IP адрес который всегда доступен (разве что Ваш firewall настроен «с выдумкой»). Интервал по умолчанию 1000 мс = 1 секунда. Ключ -n задает количество повторений 20 минут х 60 секунд = 1200 + 1 (т.к. первый пинг возвращается менее чем через 1 мс). А конструкция > nul говорит интерпретатору что стандартный вывод будет направляться в nul дабы избавиться от ненужного вывода на экран.
ping 127.0.0.1 -n 1201 > nul
Происходит вызов программы rundll32.exe, которая позволяет выполнить подпрограмму из динамической библиотеки. В данном случае SetSuspendState с нужными нам параметрами. Подробное описание в MSDN.
rundll32 powrprof.dll,SetSuspendState 0,1,0
Следует заметить, что если у вас включен гибридный режим сна (Hibernate), то войдет он именно в этот режим. Отключить его можно запустив от имени администратора следующее:
powercfg -hibernate off
start winamp http://cast.loungefm.com.ua:8000/acoustic128
Заблокировать рабочую станцию (WIN + L).
rundll32.exe User32.dll,LockWorkStation
Гибридный режим сна (Hibernate).
rundll32.exe PowrProf.dll,SetSuspendState
Перезагрузка.
shutdown.exe -r -t 00
Старая шутка с включением режима мыши для левши (меняются левая и правая кнопка мыши).
rundll32 user32.dll,SwapMouseButton
Отменить шутку с мышкой можно вызвав диалог настройки мыши и отключив эту функцию.
rundll32 shell32.dll,Control_RunDLL main.cpl,@0,1
Переместить курсор в левый верхний угол.
rundll32 user,SetCursorPos
Расположить все не свернутые окна каскадом.
rundll32 user,CascadeChildWindows
Расположить все не свернутые окна по вертикали.
rundll32 user,TileChildWindows
Еще много интересного можно найти на просторах интернета и придумать, вспоминая документацию по WinAPI функциям.
Есть всем известное выражение которое многим нравится:
Лень – двигатель прогресса.
Немного истории:
Еще в далёком 2003 году для выключения ПК по таймеру на скорую руку писалась простенькая программка. Писал сам, ибо знакомых программистов и доступа к интернету в то время у меня не было. Уверен, что много таких же «домашних программистов», которые купив или нарезав на болванки MSDN изучали программирование под Windows ночи напролёт. По случаю написания статьи отрыл ее в старом архиве на родительском ПК. Выглядела она незатейливо, но задачу свою выполняла. Как оказалось, даже сейчас ей пользуются несколько моих знакомых.
На чём она была написана уже и не помню (VC, VB, Delphi или Assembler). Размер ее был тоже не большим, но все же 16 166 против 47 байт не идут ни в какое сравнение.
И когда пару дней назад мне понадобился такой же функционал я полез искать похожий софт. Каково же было моё разочарование, когда я нашел кучу программ в среднем от 1,1 Мб до огромных монстров 15,2 Мб размером. Естественно совесть мне не позволила даже в песочнице запустить эту ересь. Понимая что мне нужна задержка выполнения в 20 минут и вызов одной лишь процедуры я вспомнил про rundll32.exe, полез в инет и не ошибся. В итоге решение было найдено за 1 минуту.
Мораль:
Зачастую для решения простых задач нам не нужен сторонний софт. Достаточно просто зайти в поисковик и найти простое решение задачи, которое в 98,785% уже есть в свободном доступе. Конечно же нужно упомянуть и другой путь, для настоящих ИТ-шников, включить воображение, зайти в мануалы MSDN и воспользоваться готовым функционалом ОС. Согласитесь, приятно пользоваться простыми и элегантными решениями, но вдвойне приятнее когда до их решения ты дошел своим умом.
Как и обещалось ранее ссылки:
Скрипты таймеров выключения, запуска радио и перехода в спящий режим — radio_sleep_scripts.zip
Вдруг будет интересна моя старая поделка — ExitXP.exe
Надеюсь мой первый пост Вам понравился. Буду рад замечаниям и предложениям касательно статьи. Хотелось бы увидеть Ваши интересные решения похожих задач в комментариях. Спасибо что уделили время и прочли до конца.
shok96
что за бред
зачем это здесь?
я такое писал еще в 2010 когда в школе учился
разве такую мелочь нельзя просто нагуглить?
зачем статья?
Metotron0
Вроде бы, ради дедов морозов.
evn
Если этого не будет «здесь», вы не сможете «нагуглить». Эта статья очень даже хороша. для таких, как вы. Гугловодов)
playermet
Была бы, если бы этой инфы уже не было на тысячах других сайтов. Буквально, без утрирования.
motoroller95
Потом это нагугливают такие горе писатели как Вы и используют…