こんにちは。いつも参考にさせて頂いております。
今日はタイトルの件でお知恵を拝借致したく。
ATL COMでインターネットエクスプローラーの
IID_IHTMLBodyElementインターフェイスを取得したいのですが
フレーム構成のページの場合のみうまくいきません。
サンプルコードは次のようになります。
部分的なコードですみません。
IHTMLDocument2 *lpHtmlDocument = NULL;
LPDISPATCH lpDispatch = NULL;
m_pBrowser->get_Document( &lpDispatch );
ATLASSERT(lpDispatch);
lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&lpHtmlDocument);
ATLASSERT(lpHtmlDocument);
lpDispatch->Release();
IHTMLElement *lpBodyElm;
IHTMLBodyElement *lpBody;
lpHtmlDocument->get_body(&lpBodyElm);
ATLASSERT(lpBodyElm);
lpHtmlDocument->Release();
lpBodyElm->QueryInterface(IID_IHTMLBodyElement,(void**)&lpBody);
開いているWebページがフレーム構成でない場合は
このコードで問題ありませんでしたが
フレーム構成の場合は
最後のlpBodyがNULLとなります。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B297950
を参考に試行錯誤しているのですが
各フレームのIID_IHTMLBodyElementインターフェースを取得するには
どのような方法があるでしょうか?
文字化けしてしまってすみません。
あらためて先ほどの投稿をペーストします。
ATL COMでインターネットエクスプローラーの
IID_IHTMLBodyElementインターフェイスを取得したいのですが
フレーム構成のページの場合のみうまくいきません。
サンプルコードは次のようになります。
部分的なコードですみません。
IHTMLDocument2 *lpHtmlDocument = NULL;
LPDISPATCH lpDispatch = NULL;
m_pBrowser->get_Document( &lpDispatch );
ATLASSERT(lpDispatch);
lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&lpHtmlDocument);
ATLASSERT(lpHtmlDocument);
lpDispatch->Release();
IHTMLElement *lpBodyElm;
IHTMLBodyElement *lpBody;
lpHtmlDocument->get_body(&lpBodyElm);
ATLASSERT(lpBodyElm);
lpHtmlDocument->Release();
lpBodyElm->QueryInterface(IID_IHTMLBodyElement,(void**)&lpBody);
開いているWebページがフレーム構成でない場合は
このコードで問題ありませんでしたが
フレーム構成の場合は
最後のlpBodyがNULLとなります。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B297950
を参考に試行錯誤しているのですが
各フレームのIID_IHTMLBodyElementインターフェースを取得するには
どのような方法があるでしょうか?
最後まで文字化けしてしまってすみません。
解決しました。
http://www.codeproject.com/miscctrl/chtmlview_search.asp#xx629912xx
こちらにFrameに対応したサンプルがありました。
ツイート | ![]() |