Показать сообщение отдельно
  #1  
Старый 05.10.2016, 17:31
Аватар для Lothlorien
Lothlorien Lothlorien вне форума
Новичок
 
Регистрация: 06.04.2011
Адрес: Солнечная система
Сообщения: 69
Версия Delphi: 7.0
Репутация: 12
Печаль Перехват сообщений клавиатуры

Всем привет!
Пишу что-то вроде программного движка, управляемого консольными командами. Хотелось бы сделать возможность забиндить команды к клавишам. Для этого выделил массив строк 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.
Ответить с цитированием