Прошу помощи.
Есть ноут с такой клавиатурой:
Есть огромное желание чтобы при нажатии на кнопку выключения имитировалось нажатие 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. Ни сон, ни гибернация на этой операционке не отлавливаются... Хз может можно как-то иначе это сделать?