Тема: Key Hook
Показать сообщение отдельно
  #1  
Старый 11.11.2010, 11:02
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию Key Hook

Доброе время суток всем!!!! Создал хук клавы....все работает, решил приспособить его в комбинации клавиш....вот проца обработки нажатия кнопки клавиатуры из DLL:
Код:
 function KeyMsgProc(Code: integer; wParam: word;
                     lParam: LongInt): LongInt; stdcall;
   var kn: array[0..50] of Char;
  begin
   GetKeyNameText(lParam, kn, SizeOf(kn));
   CurrKey:= StrPas(kn);

   if (Code = HC_ACTION) and (((lParam shr 16) and KF_UP) = 0) and
      (Pos(CurrKey, ShortC) = 0) then
    begin
     ShortC:= ShortC + CurrKey + '+';
     KeyUpped:= false;
//     MessageBox(0, PChar('---' + ShortC + '---'), PChar(''), MB_OK);
    end
   else
    if (Code = HC_ACTION) and (((lParam shr 16) and KF_UP) = KF_UP) and
        not KeyUpped then
     begin
      if ShortC[Length(ShortC)] = '+' then Delete(ShortC, Length(ShortC), 1);
      MessageBox(0, PChar('---' + ShortC + '---'), PChar(''), MB_OK);
      KeyUpped:= true;

      CurrKey:= '';
      ShortC:= '';
     end;
   Result:= CallNextHookEx(KHook, Code, wParam, lParam);
  end;

Так вот проблема в том что при нажатии, к примеру, "Alt + 0" он почему-то 2 раза выводит сообщение "---Alt + 0---", хотя по идее должна 1 раз выводить........почему тада 2 раза?
__________________
APPLICATION.TERMINATOR
Ответить с цитированием