|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Перехват сообщений клавиатуры
Всем привет!
Пишу что-то вроде программного движка, управляемого консольными командами. Хотелось бы сделать возможность забиндить команды к клавишам. Для этого выделил массив строк BINDLIST, в котором индекс соответствует ASCII-коду клавиши, а элементы - собственно команды (пустые строки "движок" игнорирует). Вызов команды выглядит так: Код:
function KeyboardHook(Code: integer; wParam: Word; lParam: LongInt): LongInt; begin if (Code = HC_ACTION) and (wParam <> 0) then begin Console.ProcessCmd(BINDLIST[wParam]); // здесь обращаемся к методу "движка", который анализирует и выполняет команду из массива Result:=0; end else Result:=CallNextHookEx(SysHook, Code, wParam, lParam); end; Увы, это не работает. Движок грамотно обрабатывает саму команду бинда, например, "bind Esc quit", добавляя в массив команду "quit" по индексу 27 (код клавиши Esc), но нажатие клавиши Esc после этого ни к чему не приводит. Если же вынести механизм перехвата в отдельную DLL, то как из нее обращаться к методу Код:
Console.ProcessCmd(BINDLIST[wParam]); Может, я неправильно оперирую параметрами Code / wParam / lParam? Ne timeas obscurum. |