![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||