MSHTML を使用しているアプリケーションに少し問題があります。件名に記載されているように、速く入力すると奇妙なキーストロークの欠落動作が発生することを除いて、すべてが機能しています。イベントをシンクするために使用する方法と関係があるのではないでしょうか?
詳細: 私のアプリケーションは、Visual Studio 2005 の C++ および MFC で記述された別個のプログラムです。プログラムは、現在実行中の (独立した) Internet Explorer のインスタンスにアタッチされ、IWebBrowser2
インターフェイスへのポインターを取得し、それを type のオブジェクトに渡します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
、これは私が機能させることができた唯一の方法でした。
どんな提案も素晴らしいでしょう!