Поставил хук на клавиатуру. Отлавливаю нажатие клавиши Win. Задача если была нажата Win + колесо мышки, то не выводить меню пуск, иначе нормальная реакция на клавишу Win.
//Хук на клавиатуру
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | function LowLevelKeyboardProc(nCode: integer ; wParam: longint ; lParam: longint ): integer ; stdcall;
var p: PKBDLLHOOKSTRUCT;
Kill:Bool;
begin
Kill:= False ;
if (nCode = HC_ACTION) then
begin
if (wParam=WM_KEYDOWN) or (wParam=WM_SYSKEYDOWN) then
begin
p:=PKBDLLHOOKSTRUCT(lParam);
if ((p^.vkCode=VK_LWIN) or (p^.vkCode=VK_RWIN)) then
begin
IsWinKeyPressed:= True ;
end ;
end
else
if (wParam=WM_KEYUP) or (wParam=WM_SYSKEYUP) then
begin
p:=PKBDLLHOOKSTRUCT(lParam);
if ((p^.vkCode=VK_LWIN) or (p^.vkCode=VK_RWIN)) then
IsWinKeyPressed:= False ;
if ((p^.vkCode=VK_LWIN) or (p^.vkCode=VK_RWIN)) and (IsMouseWheel) then
begin
IsMouseWheel:= False ;
IsWinKeyPressed:= False ;
end
end
end ;
if Kill then
Result:= 1
else
Result:=CallNextHookEx( 0 , nCode, wParam, lParam);
end ;
|
И получается если я убиваю Win на KEYDOWN у меня она остается нажатой, если убиваю и на KEYUP, то кнопка вообще не работает, и горячие клавиши естественно тоже