Опять возвращаюсь к своим баранам
Казалось бы нашёл решение, которое, увы, полечило не совсем все проблемы.
К сожалению, всё кухню понимаю о-о-чень приблизительно, поэтому объясняю на пальцах:
мой комбик живёт внутри IE. Т.е. моё приложение - это COM объект, реализующий несколько обязательных интерфейсов.
В данном случае, интерес представляет метод TranslateAcceleratorIO интерфейса IInputObject. Соответственно у меня нет привычного цикла
Код: Выделить всё
while (GetMessage()) do
begin
TranslateMessage();
DispatchMessage();
end;
Зато IE вызывает мой метод TranslateAcceleratorIO в своём подобном цикле.
Опытным путём я установил, что я должен транслировать и диспетчеризовать нажатие клавиш типа VK_DELETE, VK_INSERT и т.п. чтобы мой комбик нормально обрабатывал стандартные сочетания вроде shift-insert, ctrl-insert, ctrl-c, ctrl-v, ctrl-x и т.д.
Итого, у меня есть такая имплементация TranslateAcceleratorIO :
Код: Выделить всё
if (lpMsg.WParam in [VK_BACK,
VK_ESCAPE,
VK_LEFT,
VK_RIGHT,
VK_HOME,
VK_END,
VK_UP,
VK_DOWN,
VK_DELETE,
VK_INSERT,
VK_RETURN,
VK_CONTROL]) then begin
TranslateMessage(lpMSg);
DispatchMessage(lpMsg);
Result := S_OK;
end
else
begin
Result := S_FALSE;
end;
end;
Всё вроде бы работает как надо. За исключением единственного сочетания ctrl-c.
Это меня просто убивает: ctrl-x работает, ctrl-insert тоже, а ctrl-c - не желает.
Как бы это печальное событие отрихтовать?
Да, вот ещё нашли такое сочетание: ctrl+back. Должно удалять последнее введённое слово... Тоже не пашет

И где бы полный список глянуть всех этих сочетаний?
Заранее 10x.