Всем привет! Помогите разобратся в проблеме перехвата нажатий горячих клавиш Ctrl+C, Ctrl+V и т.д...
Коротко обрисую проблему. Есть форма с меню, на форме лежит OCX компонент представляющий собой многофункциональный текстовый редактор. Пользователь вводит в него данные... В какой-то момент, юзер решает вставить текст из буфера обмена командой Ctrl+C, в коде формы есть соответсвующий обработчик, нажимает горячие клавиши... И ничего не происходит... Дело в том, что этот OCX, содержит в себе встроенные перехватчики нажатий горячих клавиш, и к примеру при нажатии Ctrl+C этот компонент производит форматирование текста.. Идиотизм конечно полный, разработчику компонента надо оторвать руки за такую работу, но исправить положения никак нельзя. Сочетания горячий клавиш там прописаны жестко. Заменить компонент невозможно, потребуется переписать весь код проекта, а это несколько недель работы... :(((
Подскажите, как можно перехватывать события от HotKeys раньше чем этот проклятый OCX, и блокировать их обработку в нем.
Хотелось бы увидеть не просто советы типа: "Поставь локальный хук на форму, и выцарапывай события из очереди сообщений формы.....", а ссылки на примеры или статьи по данной теме...
2alex: я тебе только хотел ответить именно так, как ты написал ))
Могу посоветовать API Guide, там есть рабочий пример хука (кажется, именно на клавиши). А еще - не знаю, получится или нет, я плохо знаю, как VB создает OCX при работе приложения, как COM-объект (может, даже с защитой) или как-то по тупому. Но можно попробовать SetWindowLong, если окно ввода имеет хандл, поменять оконную процедуру и сделать, таким образом, субклассинг.
А на чём основан этот кульный эдитор? Если на EDIT или RICHEDIT, то эти клавиши обрабатывает не OCX, а само текстовое окно. Может попробовать ловить не клавиши, а например WM_NOTIFY.