掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
C++でFrame分割されたページを取得するには (ID:62360)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下のサンプルとVBAのソースを見比べて、どのように対応しているか 確認してみてください。 私は基本的には、VCのインテリセンス機能を使って、メンバ変数やメソッドがあるか確認しました。 IHTMLDocumentPtrやらIHTMLDocument2PtrやらIHTMLDocument3Ptrの使い分けはメンバがあるかないかでしかないです。 サンプル) // この掲示板のTop→Visual C++のページに移動する #include <windows.h> #include <comdef.h> #import "shdocvw.dll" rename( "FindText", "FindTextIE" ) #import "mshtml.tlb" rename( "TranslateAccelerator", "TranslateAcceleratorHTML" ) HRESULT Test() { HRESULT hr; hr = ::CoInitialize( NULL ); if ( FAILED( hr ) ) return hr; try { SHDocVw::IWebBrowser2Ptr pBrowser; // IEを立ち上げ、Programming Library を表示 hr = pBrowser.CreateInstance( __uuidof( SHDocVw::InternetExplorer ) ); if ( FAILED( hr ) ) _com_issue_error( hr ); pBrowser->Visible = VARIANT_TRUE; pBrowser->Navigate( _bstr_t( L"http://madia.world.coocan.jp/" ) ); // ページが表示されるまで待つ while ( pBrowser->Busy == VARIANT_TRUE || pBrowser->ReadyState != READYSTATE_COMPLETE ) ::Sleep( 100 ); MSHTML::IHTMLDocument2Ptr pDocument( pBrowser->Document ); // すべてのフレームをチェック MSHTML::IHTMLFramesCollection2Ptr pFrameCollection( pDocument->frames ); for ( long i = 0L; i < pFrameCollection->length; i++ ) { MSHTML::IHTMLWindow2Ptr pFrame( pFrameCollection->item( &_variant_t( i ) ) ); MSHTML::IHTMLDocument2Ptr pDoc( pFrame->document ); // すべてのリンクをチェック MSHTML::IHTMLElementCollectionPtr pCollection( pDoc->links ); for ( long j = 0L; j < pCollection->length; j++ ) { // ※DispHTMLLinkElementPtrだと、hrefがうまく取れないので、Anchorにしてある MSHTML::DispHTMLAnchorElementPtr pAnchor( pCollection->item( _variant_t( j ) ) ); // 該当の URL か? if ( _bstr_t( pAnchor->href ) == _bstr_t( L"http://madia.world.coocan.jp/vc/index.html" ) ) { pAnchor->click(); // ページが表示されるまで待つ while ( pBrowser->Busy == VARIANT_TRUE || pBrowser->ReadyState != READYSTATE_COMPLETE ) ::Sleep( 100 ); break; } } } } catch ( _com_error& e ) { hr = e.Error(); } ::CoUninitialize(); return hr; } int main() { Test(); return 0; } > 'デバックで表示する デバッグです。 VCでどうしてもかけないのであれば、VBAではなくVBSで該当の動作をするコードを書き それをVCから起動させるのもありかなぁと。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.