Не дать появиться чужому меню.

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

Не дать появиться чужому меню.

Сообщение vipe2004 » 17.05.2005 (Вт) 21:51

В окне чужого приложения нужно скрыть строку меню.
Беда в том, что при разных действиях юзера в этом окне состав строки меню изменяется и ,соответственно, перерисовывается.

Если поставить на таймер такой код:

If GetMenu(hwnd) > 0 Then
SetMenu hwnd, 0
End If

то обновленное меню опять пропадает, но при этом окно передергивается.
Как отловить создание(обновление) меню до его появления на экране?

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 18.05.2005 (Ср) 0:55

Здесь наверное может помочь сабклассинг, но т.к. приложение чужое и если система NT тогда его использовать будет сложно. Придется как-то записать свою функцию перехватчик в память чужего процесса.

Конечно можно еще попробывать поэксперементировать с LockWindowUpdate, но в этом я тоже неуверен.

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 18.05.2005 (Ср) 8:28

Да нет. LockWindowUpdate не пойдет. Кроме строки меню окно должно нормально обновляться.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.05.2005 (Ср) 9:10

ism писал(а):Здесь наверное может помочь сабклассинг, но т.к. приложение чужое и если система NT тогда его использовать будет сложно. Придется как-то записать свою функцию перехватчик в память чужего процесса.

Пример этого "как-то" есть в топике про глобальные хуки.
Изображение

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 18.05.2005 (Ср) 9:48

Спрошу по-другому.
Что посылается окну перед появлением меню на экране?

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 18.05.2005 (Ср) 12:06

Неужели никто не знает?

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 18.05.2005 (Ср) 15:04

А у меня вот другой вопрос, но похожий.
Можно ли как то заблокировать контекстное меню в чужом контроле (который подключается в виде dll компонента)?
Или вообще заблочить реакцию правой мышки на территории приложения, т.к. правая кнопка мне совсем не нужна :)
----

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 18.05.2005 (Ср) 20:26

Попробовал с хуком.
WM_INITMENU посылается при активизации уже показанного меню.
А что же посылается до показа меню на экране.
Чего ловить, а?

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 19.05.2005 (Чт) 7:16

Вот тут есть немного инфы. Внизу страницы походи по шагам.

http://www.firststeps.ru/mfc/winapi/accel/r.php?32

и вот ещё чуть чуть

http://www.firststeps.ru/mfc/winapi/accel/r.php?36

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 19.05.2005 (Чт) 7:41

Спасибо за информацию, но это не то. Это все касается уже появившегося меню. А как не допустить его появления?


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 188

    TopList