Показать сообщение отдельно
  #1  
Старый 23.11.2006, 21:02
Nowichok Nowichok вне форума
Прохожий
 
Регистрация: 23.11.2006
Сообщения: 1
Репутация: 10
По умолчанию Глобальный хук & событие отжатия клавиши

Пишу программу, которая отлавливает ВСЕ нажатия клавиш в системе. Пишется она для того чтобы регулировать громкость с клавиатуры (клавиатура стандратная, блин ). Привожу часть кода из библиотеки :

Код:
function Key_Hook(Code: integer; wParam: word; lParam: DWord): Longint;stdcall; export;
var KeyState:integer;
begin
If Code>=0 then
 begin
  if HiWord(GetKeyState(VK_MENU)) <> 0 then
   begin
    if HiWord(GetKeyState(VK_CONTROL)) <> 0 then
     begin
      case wParam of
       VK_ADD:VolumeHigh; //moya function
       VK_SUBTRACT:VolumeLow; //moya function
       VK_MULTIPLY:
        begin
         KeyState:=GetKeyState(wParam);
         if HiWord(KeyState)=0 then  // {KeyState>=0 toze kak variant}
           VolumeOnOff; //moya function
        end;
      end;
   end;
 end;
end;
result:=0;
end;

так вот вроде бы всё работает. Зажимаю Alt+CTRL+Num* - звук отрубается. Ещё раз нажимаю - врубается.
НО этого не происходит в играх и в word'е (может и ещё где ,просто тут замечено). Там ,как я ппдодозреваю, происходит лишняя обработка (нажал клавишу + отпустил клавишу)...в итогу звук отрубается и тут же врубается.

Как мне сделать, чтобы я мог контролировать отжатие клавиши и в этих случаях ??
А то уже 4-й день бьюсь над этим..что только не пробовал.
Если чтО ,использую хук WH_KEYBOARD.
Ответить с цитированием