Глобальный перехват правой кнопки мыши

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Глобальный перехват правой кнопки мыши

Сообщение Alprog » 09.02.2010 (Вт) 12:15

На форме лежит ShockwaveFlashObject (flash10c.ocx), в котором играется флэш-ролик.
При нажатии на нём правой кнопкой мыши появляется контекстное меню, я же хочу задействовать правую кнопку для своих нужд.

Казалось бы достаточно ловить сообщения windows, но проблема в том, что у компонента нет свойства, которое бы позволяло узнать hwnd.
Тем не менее, контрол поглощает сообщения (то есть, если водить над ним мышью, то форме сообщения уже не приходят), что
наводит на мысли о том, что hwnd всё-таки у контрола есть, но простым смертым его давать не хотят.

Как бы мне всё-таки его получить? Или как ещё можно было бы перехватить правую кнопку мыши.

p.s. Пытался воспользоваться тем, что контекстное меню закрывается по клавиши escape.
Сделал таймер, который эмулировал постоянные нажатия escape, но контрол почему-то их игнорирует (пробовал и SendKeys и key_event).

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Глобальный перехват правой кнопки мыши

Сообщение Alprog » 09.02.2010 (Вт) 12:32

Я сделал это!

Достаточно было просто правильно сформулировать проблему для себя (что я сделал, когда писал предыдущий пост),
как тут же и появилось решение.

hwnd у контрола действительно есть, а ловлю я его очень просто:

Код: Выделить всё
flash.SetFocus        'Установить фокус на контроле
hwnd = GetFocus    'Функция из user32, возвращающая hwnd окна, имеющего фокус

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Глобальный перехват правой кнопки мыши

Сообщение alibek » 09.02.2010 (Вт) 12:45

Я думаю, что можно было бы обойтись и FindWindowEx.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 16

    TopList