2010-05-11 3 views
1

В настоящее время я создаю простую дополнительную кнопку на панели инструментов Internet Explorer 7. Кнопка работает. Я использую Visual C++.Кнопка добавления на панель инструментов Internet Explorer во время выполнения

Но теперь я хотел бы создать a, чтобы создать кнопку во время работы моего Internet Explorer. Значит, при определенных условиях моя программа (DLL, зарегистрированная в regsvr32) добавит кнопку на панель инструментов. и после определенного условия кнопка также может исчезнуть.

Как я могу это достичь?

обновление:

Я попытался с помощью этой строки:

ShowWindow(hWndButton, SW_HIDE); 

Это скрывает мой браузер Internet Explorer. В диспетчере задач он все еще работает. Как заставить скрывать только объект кнопки?

редактировать:

Я хочу изменить этот код ..

STDMETHODIMP CButtonDemoBHO::Exec(const GUID*, DWORD nCmdID, DWORD d, VARIANTARG*, VARIANTARG* pvaOut){ 
ATLTRACE("CButtonDemoBHO::Exec\n"); 

switch (nCmdID){ 
case BUTTON_PRESSED: 

MessageBox(m_hWnd, L"You have pressed the button", L"Button Pressed", MB_OK); 

    <------- I would like to hide the button here. 

    break; 
case MENU_ITEM_SELECT: 
MessageBox(m_hWnd, L"You have simulated a button press with the menu ", L"Menu Pressed", MB_OK); 
    break; 
    } 
    return S_OK; 
} 
+0

Вы говорите «кнопка работает» - это означает, что ** вы ** создали кнопку - правильно? Как вы его создаете? – egrunin

+0

да. Кнопка зарегистрирована с помощью regsvr32. Но по умолчанию я хочу, чтобы он скрывался, и после определенного условия внутри моей программы cpp появится кнопка. – karikari

+0

Прежде всего: regsvr32 регистрирует ** BHO **, а не кнопку ** **. См. Мой новый отредактированный ответ для фактического решения вашей проблемы ... – egrunin

ответ

2

Вы можете добавить кнопку всегда (как сейчас), но скрыть его/показать его, когда вы хотите его видеть?

Edited добавить:

Чтобы скрыть кнопку, вам нужно использовать ShowWindow(). Есть два способа:

  1. Если кнопка является CButton, вызовите theButton.ShowWindow(SW_HIDE)
  2. Если кнопка является простым окно, вызовите ShowWindow(hWndButton, SW_HIDE)

Отредактировано снова:

Я нашел исходный код, который вы пытаетесь изменить: forum-assist.

В принципе, какой бы класс не определил кнопку или не знает, как ее найти (возможно, RebarHandler.cpp), вы должны добавить методы, чтобы показать и скрыть кнопку. Тогда вы должны позвонить, что от CButtonDemoBHO::Exec().

Я не могу рассказать вам, как добраться от CButtonDemoBHO до CRebarHandler без анализа всего проекта.

+0

Это тоже нормально. но я не знаю, как это сделать. – karikari

+0

Эта кнопка находится на панели инструментов IE. Какой из них я должен использовать? – karikari

+0

Как я могу сказать, что кнопка представляет собой CButton или простое окно? – karikari

Смежные вопросы