|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как запретить автоматическое отключение дисплея?
Здравствуйте.
Как запретить автоматическое отключение дисплея? Т. е. пока программа работает, дисплей должен не отключатся. Программу закрыли - дисплей может отключатся. Или как запретить автоматический переход в режим сна "Connected Standby"? СПАСИБО. |
#2
|
||||
|
||||
Собсно физическое отключение - никак, забыли в виндовс драйвер блокировки кнопки "пауэр" для гляделки приложить Видимо речь здесь об отключении хранителя экрана идёт, вот пример из DRKB как его блокировать на время исполнения программы
Код:
... private procedure AppMessage(var Msg: TMsg; var handled: Boolean); end; ... implementation ... procedure TForm1.AppMessage(var Msg: TMsg; var handled: Boolean); begin if (Msg.Message = WM_SYSCOMMAND) and (Msg.wParam = SC_SCREENSAVE) then Handled := True; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; end; { Note: The Screensaver is only disabled during the lifespan of your application.} Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Нужно не для стационарного компа, а для планшета. На нем автоматическое отключение дисплея и автоматический переход в режим сна "Connected Standby" одно и тоже. Автоматическое значит не кнопкой повер, а по истечении времени устанавливаемого в настройках винды.
|
#4
|
||||
|
||||
Понятно, пестни значит умолкают при заморозке для этого и нужно глушить скринсейвер, но можно и радикально-не программно отключить режим Connected Standby: регэдитом из-под админа на ветке HKLM -> SYSTEM -> CurrentControlSet -> Control -> Power - параметр CsEnabled сменить с 1 на 0
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Если отключить CsEnabled в реестре, то спящего режима нет вообще, дисплей автоматически отключается, но может случайно включится, т.к. тачскрин продолжает работать.
Такой метод не подходит, потому что надо перезагружаться при изменении CsEnabled. А постоянно отключенный CS с какими-то недостатками. |
#6
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
Цитата:
Надо что-то типа такого, только для блокировки режима сна CS, а не S1, S2, S3, S4: Код:
type TForm1 = class(TForm) private procedure WMPowerBroadcast(var Message: TMessage); message WM_POWERBROADCAST; ... end; ... const PBT_APMQUERYSUSPEND = 0; procedure TForm1.WMPowerBroadcast(var Message: TMessage); begin if Message.Wparam = PBT_APMQUERYSUSPEND then Message.Result := BROADCAST_QUERY_DENY; end; |
#8
|
|||
|
|||
Получилось.
Код:
const POWER_REQUEST_CONTEXT_VERSION = 0; POWER_REQUEST_CONTEXT_SIMPLE_STRING = 1; POWER_REQUEST_CONTEXT_DETAILED_STRING = 2; type PREASON_CONTEXT = record Version: ULONG; Flags: DWORD; SimpleReasonString: PWChar; end; POWER_REQUEST_TYPE = (PowerRequestDisplayRequired, PowerRequestSystemRequired, PowerRequestAwayModeRequired, PowerRequestExecutionRequired); function PowerCreateRequest(const Context: PREASON_CONTEXT): THandle; stdcall; external kernel32 name 'PowerCreateRequest'; function PowerSetRequest(PowerRequest: THandle; RequestType: POWER_REQUEST_TYPE): BOOL; stdcall; external kernel32 name 'PowerSetRequest'; function PowerClearRequest(PowerRequest: THandle; RequestType: POWER_REQUEST_TYPE): BOOL; stdcall; external kernel32 name 'PowerClearRequest'; var PowerRequest: THandle; procedure TForm1.FormCreate(Sender: TObject); var PowerRequestContext: PREASON_CONTEXT; begin PowerRequestContext.Version := POWER_REQUEST_CONTEXT_VERSION; PowerRequestContext.Flags := POWER_REQUEST_CONTEXT_SIMPLE_STRING; PowerRequestContext.SimpleReasonString := 'Continuous measurement'; PowerRequest := PowerCreateRequest(PowerRequestContext); PowerSetRequest(PowerRequest, PowerRequestDisplayRequired); end; procedure TForm1.FormDestroy(Sender: TObject); begin PowerClearRequest(PowerRequest, PowerRequestDisplayRequired); CloseHandle(PowerRequest); end; |
#9
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#10
|
|||
|
|||
У меня Onda v820w ch Windows 10, по умолчанию включен CS. Возможно у вас он выключен или есть в настройках сна различия на Win 8 и 10, также биос должен его поддерживать.
Пробовал кроме PowerRequestDisplayRequired другие System, AwayMode и Execution, экран тухнет и в сон вроде не уходит. Конечно лучше чтоб экран тух, но при этом и звук исчезает в MPC-HC. Много раз было, что ставлю на закачку торрент или файл в браузере, или видео конвертироваться, прихожу, задача не выполнена, спит. Надоело в параметрах питания время ухода в сон подкручивать. Написал программку продления бодрствования в один клик NoSleep.rar. Последний раз редактировалось pirsddd, 21.04.2017 в 17:29. |
Этот пользователь сказал Спасибо pirsddd за это полезное сообщение: | ||
gumel (24.04.2020)
|