FAQ — Включение и выключение устройств ввода/вывода из программы на Delphi
Иногда может возникнуть необходимость в выключении на время устройств ввода — клавиатуры и мыши. Например, это неплохо сделать на время выполнения кода системы защиты от копирования, в играх, или в качестве «наказания» при запуске программы по истечению срока ее бесплатного использования . . Однако наилучшее ее применение — отключение клавиатуры и мыши на время работы демонстрационки, основанной на воспроизведении записанных заранее перемещений мышки и клавиатурного ввода (см. об этом отдельный раздел этой книги). Это элементарно сделать при помощи API:
EnableHadwareInput(Enable:boolean): boolean; — Enable — требуемое состояние устройств ввода (True — включены, false — выключены). Если ввод заблокирован, то его можно разблокировать вручную — нажать Ctrl + Alt + Del, при появлении меню «Завершение работы программы» ввод разблокируется.
А вот еще интересный прикол. Включение/выключение монитора программным способом.
Предупреждаю сразу! После того, как вы отключите монитор, просто так вы его уже не включите (хотя это может быть зависит от монитора, я, во всяком случае, не смог). Только после перезагрузки компьютера.
Отключить : SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
Включить : SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
Примечание !! В справке оговорено, что эта функция работает только в W95 !
Урок 26. Работа с таймером
Изучим основы работы с таймером. Таймер — это компонент, имеющий только одно одноименное событие. Это событие таймер генерирует через определенные промежутки времени. С технической же точки зрения таймер просто посылает окну сообщение WM_TIMER . Этот компонент расположен на вкладке System палитры компонентов.
Перенесите его на форму. Основное свойство для таймера — это Interval . Оно определяет (в миллисекундах), как часто наш компонент будет генерировать событие Timer . Например, если мы установим его значение в 1000, то событие Timer будет генерироваться раз с секунду, а если установим в 500 — то 2 раза в секунду. Если же это свойство установить в 0, то наше событие вообще генерироваться не будет.
Для примера рассмотрим, как наша программа раз в секунду может издавать звуковой сигнал. Для этого установите Interval в 1000, затем в заготовке для события таймера (для ее получения перейдите на вкладку Events инспектора объектов и сделайте двойной щелчок в строке OnTimer ).
Внесите следующий код:
procedure TForm1.Timer1Timer(Sender: TObject);
MessageBeep(0); //Звуковой сигнал
Запускайте программу. Раз в секунду будет раздаваться стандартный звуковой сигнал.
А вот как можно заставить таймер выполнить некоторое действие однократно:
procedure TForm1.Timer1Timer(Sender: TObject);
Timer1.Interval:=0; //Отключаем таймер
Разумеется, в этом случае необходимо установить для свойства Interval таймера некоторое первоначальное значение.
Способы автоматического выключения компьютера
К сожалению, мало кто знает, но в последних трех версиях операционных систем семейства Windows (7,8 и 10) присутствует такая опция, как таймер сна или таймер выключения компьютера. Пользователю ПК предоставляется возможность настроить отключение устройства через интервал времени или по определенному расписанию. Для чего это необходимо?
Некоторые родители стараются ограничить времяпрепровождение их детей за компьютером. Настроив таймер с определенным интервалом, они будут спокойны, что ребенок не будет увлечен игрой или просмотром мультфильма больше назначенного или рекомендованного времени.
Также опция необходима в тех случаях, когда компьютер является частью системы или рабочего комплекса. Например, система должна считывать, анализировать и сохранять какие-либо данные каждый день до определенного промежутка времени.
После наступления конечной точки отсчета необходимость в использовании оборудования отсутствует. Поэтому использование функции выключение компьютера по времени позволяет исключить факт нерационального использования ресурсов.
Таким образом, существует два способа автоматического завершения работы:
- по таймеру;
- по расписанию.
Программа для выключения компьютера через определённое время.
Также есть программы-таймеры, для выключения компьютера. Раньше я пользовался программой Auto PowerOFF Plus, но она показалась мне слишком громоздка для выполнения одной лишь функции — выключения компьютера по таймеру. Однако, кому-то её функции могут оказаться полезны, к примеру, в ней можно настроить расписание, т.е. выключение компьютера каждый день в определённое время. Посмотрите сами на скриншот, если программа покажется вам интересна, тогда скачивайте её по ссылке парой строчек выше:
Мне больше пришлась по душе программа Airytec Switch Off. Она бесплатная, скачать её вы можете по ссылке ниже. В архиве находится установочный файл программы, а также Portable версии для 32- и 64-битных операционных систем:
Как пользоваться программой, вы, я думаю, разберётесь. Выставляем параметр Coundown(обратный отсчёт), задаём время выключения компьютера. Всё, как на скриншоте: