Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Перехват нажатий горячих клавиш на форме. Добавлено: 11.02.04 10:11  

Автор вопроса:  alex

Всем привет!
Помогите разобратся в проблеме перехвата нажатий горячих клавиш Ctrl+C,
Ctrl+V и т.д...
 
Коротко обрисую проблему. Есть форма с меню, на форме лежит OCX компонент
представляющий собой многофункциональный текстовый редактор. Пользователь
вводит в него данные... В какой-то момент, юзер решает вставить текст из
буфера обмена командой Ctrl+C, в коде формы есть соответсвующий обработчик,
нажимает горячие клавиши... И ничего не происходит...
Дело в том, что этот OCX, содержит в себе встроенные перехватчики нажатий
горячих клавиш, и к примеру при нажатии Ctrl+C этот компонент производит
форматирование текста.. Идиотизм конечно полный, разработчику компонента
надо оторвать руки за такую работу, но исправить положения никак нельзя.
Сочетания горячий клавиш там прописаны жестко. Заменить компонент
невозможно, потребуется переписать весь код проекта, а это несколько
недель работы... :(((

Подскажите, как можно перехватывать события от HotKeys раньше чем этот
проклятый OCX, и блокировать их обработку в нем.

Хотелось бы увидеть не просто советы типа:
"Поставь локальный хук на форму, и выцарапывай события из очереди
сообщений формы.....", а ссылки на примеры или статьи по данной теме...

 

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #1 Добавлено: 11.02.04 14:04

А что, обычное событие KeyDown не деиствует?

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 11.02.04 16:43

2alex: я тебе только хотел ответить именно так, как ты написал :)))

Могу посоветовать API Guide, там есть рабочий пример хука (кажется, именно на клавиши). А еще - не знаю, получится или нет, я плохо знаю, как VB создает OCX при работе приложения, как COM-объект (может, даже с защитой) или как-то по тупому. Но можно попробовать SetWindowLong, если окно ввода имеет хандл, поменять оконную процедуру и сделать, таким образом, субклассинг.

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 12.02.04 02:09
А на чём основан этот кульный эдитор? Если на EDIT или RICHEDIT, то эти клавиши обрабатывает не OCX, а само текстовое окно. Может попробовать ловить не клавиши, а например WM_NOTIFY.

Ответить

Номер ответа: 4
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #4 Добавлено: 12.02.04 14:10

Cпасибо всем за помощь, вы меня натолкнули на мысль об использовании

событий WM, нашел OCX который их отлавливает на форме...

:))))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам