У меня небольшая проблема с моим приложением, использующим MSHTML. У меня все работает, кроме нечетного поведения при отсутствии нажатия клавиш при быстром наборе, как упомянуто в строке темы. Я думаю, что это может иметь отношение к методу, который я использую, чтобы потопить события?
Подробности: мое приложение представляет собой отдельную программу, написанную на C ++ и MFC в Visual Studio 2005. Программа подключается к текущему (независимому) экземпляру Internet Explorer, получает указатель на интерфейс IWebBrowser2
и передает его в объект типа CCmdTarget
:
class CHandler : public CCmdTarget
{
IWebBrowser2* m_pWebBrowser2;
DWORD m_dwBrowserCookie;
…
DECLARE_DISPATCH_MAP()
};
Этот класс отслеживает, что происходит в браузере. Я опускаю события браузера с помощью следующей команды:
LPUNKNOWN pUnkSink = GetIDispatch(FALSE);
retval = AfxConnectionAdvise((LPUNKNOWN)m_pWebBrowser2, DIID_DWebBrowserEvents2, pUnkSink, FALSE, &m_dwBrowserCookie);
Если я закомментирую AfxConnectionAdvise
, то никакие нажатия клавиш не будут пропущены, но больше событий не будет. Если я оставлю это внутри, я потоплю события, но пропущу случайное нажатие клавиши при быстром наборе.
Я знаю, что есть несколько способов подключения к событиям (AtlAdvise
, точки подключения), но это был единственный способ, с помощью которого я мог работать.
Любые предложения будут великолепны!