как из AddIn-a определить режим отладки?

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

как из AddIn-a определить режим отладки?

Сообщение arthur2 » 18.03.2009 (Ср) 11:05

Субклассинг во внешней библиотеке, чтобы среда не падала. Но после останова сообщения продолжают в окно поступать. Хочу, чтобы субклассинг знал, в каком режиме сейчас IDE, и если в режиме останова, то чтобы не слал мне ни каких событий.

Сейчас у меня всё это работает так: из субклассинга читаю заголовок окна бейсика, и если он отличается от того, что было при старте, значит останов.

Это работает вполне хорошо, за исключением одного: заголовок, вероятно, меняется уже после останова, и пока библиотека его прочитает, несколько событий видимо всё же успевают пройти.

Есть ли возможность из АддИна узнать, когда происходит останов (я бы создавал при этом , например, глобальный атом, чтобы из субклассинга его увидеть и приостанавливать генерацию событий)
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: как из AddIn-a определить режим отладки?

Сообщение Хакер » 18.03.2009 (Ср) 13:11

Меню и тулбар ведь имеют свою объектную модель. Может стоит найти там команду "Стоп" и ловить её события?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: как из AddIn-a определить режим отладки?

Сообщение arthur2 » 18.03.2009 (Ср) 15:00

В общем, я обошёлся без АддИна :) Для моего случая всё оказалось проще: в winproc, которая в библиотеке, в начало добавил:

Код: Выделить всё
    If EbMode = 2 Then
      winProc = DefWindowProc(hwnd, uMsg, wParam, lParam)
      Exit Function
    End If

EbMode объявлена так:
Declare Function EbMode Lib "vba6.dll" () As Long

Собственно, и всё :)


Но про АддИны по-прежнему интересно (ни разу их не писал).
Пытаюсь разобраться, поковырявшись в том, что сгенерировал визард.
Ищу меню Стоп
Код: Выделить всё
    Dim cbMenu As Office.CommandBar
    Set cbMenu = VBInstance.CommandBars("Run")
    Set mcbMenuCommandBar = cbMenu.FindControl(, "Stop")
    Set Me.MenuHandler = VBInstance.Events.CommandBarEvents(mcbMenuCommandBar)

Какие параметры и как нужно передать в cbMenu.FindControl (а то бейсик говорит, что я передаю чего-то не то :oops:

И кстати - а толку? ведь останов может быть не только по меню или кнопке, но и стопом в коде, бреком, по ошибке и.т.д
Артур
 
   


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

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

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

    TopList