掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
IWebBrowser2によるURLの取得 (ID:64193)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ATLを使わない方法ですが、こんな感じ。 BSTRはcomdef.hの_bstr_tクラスを使うとconst char*にキャストできるので便利。 (WideCharToMultiByteはおそらく内部で処理される) // 一番最初に見つかったInternet Explorerの表示しているURLを取得する // 環境:Windows Xp Pro SP2/Visual C++ 6.0 Enter SP6/Internet Explorer 6.0 SP2 #include <windows.h> #import <shdocvw.dll> #import <mshtml.tlb> HRESULT GetIEURL( _bstr_t& url ) { HRESULT hr = S_OK; SHDocVw::IShellWindowsPtr pSW = NULL; try { hr = pSW.CreateInstance( __uuidof( SHDocVw::ShellWindows ) ); if ( FAILED( hr ) ) _com_issue_error( hr ); // Internet Explorer と Explorere が列挙される for ( long i = 0; i < pSW->Count; ++i ) { SHDocVw::IWebBrowser2Ptr pIE = NULL; if ( pIE = pSW->Item( i ) ) { MSHTML::IHTMLDocumentPtr pDoc = NULL; if ( pDoc = pIE->GetDocument() ) // IInternet Explorerかどうか判定 { url = pIE->GetLocationURL(); break; } } } } catch (_com_error& e) { hr = e.Error(); } if ( pSW ) pSW.Release(); return hr; } int main() { if ( SUCCEEDED( ::CoInitialize( NULL ) ) ) { _bstr_t url; if ( SUCCEEDED( GetIEURL( url ) ) ) { // 確認 ::MessageBox( NULL, url, TEXT( "URL" ), MB_OK ); } ::CoUninitialize(); } return 0; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.