Конференция "WinAPI" » GetAsyncKeyState пропускает нажатия клавишь. [D7, WinXP]
 
  • kanibal (01.12.09 21:08) [0]
    Записываю нажатия с помощью GetAsyncKeyState :

    function GetActiveKey:Char;
    ...
    for c := 8 to 246 do
     if GetAsyncKeyState(c) = -$7FFF then
    ...



    Вызов GetActiveKey стоит в бесконечном цикле.
    Для того, чтобы процесс не занимал 50% CPU поставил Sleep(1);
    НО при этом если быстро набирать - часть букв пропадает.
  • 0x00FF00 (01.12.09 22:26) [1]
    Насколько не изменяет мне память, структура ответа такова, что достаточно написать
    if GetAsyncKeyState(c) >= 0


    и не заморачиваться с шестнадцатеричными константами.
  • brother © (02.12.09 05:02) [2]
  • brother © (02.12.09 05:04) [3]
    зы, яб всеж в таймере проверял с интервалом в 1...
  • miek (02.12.09 08:41) [4]
    все работает как надо. если хочешь записывать _все_ клавиши, пиши хук на главиатуру. если только нажатия для своего окна - лови сообщения.
  • имя (08.08.11 11:30) [5]
    Удалено модератором
  • QAZ (08.08.11 12:10) [6]

    > поставил Sleep(1);
    > НО при этом если быстро набирать - часть букв пропадает

    так этож логично
 
Конференция "WinAPI" » GetAsyncKeyState пропускает нажатия клавишь. [D7, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]