Из письма: “Подскажите, пожалуйста, как в Delphi можно отключить монитор (например, как в режиме standby)”.
Честно говоря до недавнего времени времени данный вопрос как то не возникал. Но по всей видимости появление парка мобильных компьютеров вносит свои коррективы в функциональность разрабатываемых программ. Анализ форумов показал, что этот вопрос пользуется популярностью.
Одним из решений поставленной задачи будет использование системного сообщения WM_SYSCOMMAND с указанием команды SC_MONITORPOWER. В документации по Delphi указано, что данная функция предназначена только для Windows 95. Но на практике она работает и на более поздних версиях Windows при включенной поддержке режима энергосбережения в BIOS. Создадим два метода для включения и выключения монитора:
const MONITOR_ON = -1; MONITOR_OFF = 2; . . . procedure TfrmMain.actMonitorPowerOffExecute(Sender: TObject); begin SendMessage(frmMain.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF); end; procedure TfrmMain.actMonitorPowerOnExecute(Sender: TObject); begin SendMessage(frmMain.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON); end;
ВНИМАНИЕ. Хочется обратить ваше внимание на возможность перегрузки элементов монитора при многократном быстром переключении режимов, что может привести к поломке электроники. Так что использовать вышеописанные функции следует осторожно.