IID_IHTMLBodyElement を取得するには?

解決


キー  2006-04-12 15:35:12  No: 61198  IP: 192.*.*.*

こんにちは。いつも参考にさせて頂いております。
今日はタイトルの件でお知恵を拝借致したく。

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インターフェースを取得するには
どのような方法があるでしょうか?

編集 削除
キー  2006-04-12 18:31:23  No: 61199  IP: 192.*.*.*

文字化けしてしまってすみません。
あらためて先ほどの投稿をペーストします。

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インターフェースを取得するには
どのような方法があるでしょうか?

編集 削除
キー  2006-04-12 19:20:49  No: 61200  IP: 192.*.*.*

最後まで文字化けしてしまってすみません。
解決しました。

http://www.codeproject.com/miscctrl/chtmlview_search.asp#xx629912xx

こちらにFrameに対応したサンプルがありました。

編集 削除