Событие DWebBrowserEvents2 :: CommandStateChange () - PullRequest
0 голосов
/ 08 августа 2011

В BHO мне нужно перехватить кнопки Назад / Вперед.

Для этого я объявил метод в своем проекте:

BEGIN_SINK_MAP(CAddonHandler)
...

   SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_COMMANDSTATECHANGE, CommandStateChange)

.....
END_SINK_MAP()


void STDMETHODCALLTYPE CommandStateChange( long Command, VARIANT_BOOL Enable);

Определение этого метода:

void STDMETHODCALLTYPE CAddonHandler::CommandStateChange( long Command, VARIANT_BOOL Enable)
{    
    if ((Command == CSC_NAVIGATEFORWARD) || (Command == CSC_NAVIGATEBACK))
      m_numberTransition = 5;
}

После сборки и запуска этот метод начал перехватывать все события IE:

Введите URL из адресной строки, нажмите на ссылку и т. Д. Почему?

Я заметил браузервызывал этот метод два раза:

первый для CSC_NAVIGATEBACK, второй для CSC_NAVIGATEFORWARD

Любые идеи

...