![]() |
|
#1
|
|||
|
|||
![]() Доброе время суток всем!!!! Создал хук клавы....все работает, решил приспособить его в комбинации клавиш....вот проца обработки нажатия кнопки клавиатуры из 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 |