Всем привет!
Пишу что-то вроде программного движка, управляемого консольными командами. Хотелось бы сделать возможность забиндить команды к клавишам. Для этого выделил массив строк BINDLIST, в котором индекс соответствует ASCII-коду клавиши, а элементы - собственно команды (пустые строки "движок" игнорирует). Вызов команды выглядит так:
Код:
1 2 3 4 5 6 7 8 9 10 11 | 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, то как из нее обращаться к методу
Код:
1 | Console . ProcessCmd(BINDLIST[wParam]);
|
?
Может, я неправильно оперирую параметрами Code / wParam / lParam?