![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Прошу помощи.
Есть ноут с такой клавиатурой: ![]() Есть огромное желание чтобы при нажатии на кнопку выключения имитировалось нажатие 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. Ни сон, ни гибернация на этой операционке не отлавливаются... Хз может можно как-то иначе это сделать? |