VC++でIEコンポーネント使ってこっそりHTTPアクセス

Visual C++2005でATLを使わずにCOM(ActiveX)のWebBrowserコントロールを使う方法。

#pragma warning(disable:4192)
#import <shdocvw.dll> auto_rename
#import <mshtml.tlb> auto_rename
#pragma warning(default:4192)

...

   CoInitialize(NULL);

   SHDocVw::IWebBrowser2Ptr pIE;

   //IEの起動
   try {
    HRESULT hr = pIE.CreateInstance(__uuidof(SHDocVw::InternetExplorer));
    SUCCEEDED(hr) ? 0 : throw hr;

    //IE非表示
    pIE->PutVisible(VARIANT_FALSE);

    pIE->Navigate(_T("http://yahoo.com")); 

    while(pIE->GetBusy() != FALSE || pIE->GetReadyState() != READYSTATE_COMPLETE) {
	    //この間にInvoke()でイベントが捕捉できる
		::Sleep(200);
	}
    pIE->Quit();
   }catch(...){
   }

   ::CoUninitialize();

ネタ元