Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.04.2020, 11:44
gumel gumel вне форума
Прохожий
 
Регистрация: 29.12.2010
Сообщения: 4
Репутация: 10
По умолчанию Не дать уснуть Windows 10 или как подменить действие нажатия клавиши POWER?

Прошу помощи.

Есть ноут с такой клавиатурой:


Есть огромное желание чтобы при нажатии на кнопку выключения имитировалось нажатие END.

Перепробовал разные способы. Ничего не получалось. Решил перехитрить виндовс, назначил на копку выключения сон и попытался отловить это событие.

Желаемую штуковину получилось реализовать через WM_POWERBROADCAST:

Код:
...
procedure WMPOWERBROADCAST(var Msg: TWMPOWER);  message WM_POWERBROADCAST;
...
const
  PBT_APMQUERYSUSPEND = 0;
...
procedure TForm1.WMPOWERBROADCAST(var Msg: TWMPOWER);
begin
  if TMessage(Msg).Wparam = PBT_APMQUERYSUSPEND then  // sleep
    begin
      Msg.Result := integer(BROADCAST_QUERY_DENY);  // no sleep
      keybd_event(VK_END, 0, 0, 0);                // keydown END.
      keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); //keyup END
    end;
end;

Алгоритм четко работает на Windows XP.

К сожалению, не работает на Windows 10. Ни сон, ни гибернация на этой операционке не отлавливаются... Хз может можно как-то иначе это сделать?
Ответить с цитированием
 



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter