大体こんな感じーというサンプル。
動作は確認してない。
//Internet Explorer操作用タイプライブラリの取り込み #pragma warning ( disable: 4146 ) #import "C:\WINDOWS\system32\shdocvw.dll" rename("FindText", "FindTextIE") #import "C:\WINDOWS\system32\mshtml.tlb" rename("TranslateAccelerator","TranslateAcceleratorHTML") #pragma warning ( default: 4146 ) //IE操作用オブジェクトの宣言 SHDocVw::IWebBrowser2Ptr pIE = NULL; void IEBusyWait() { if( pIE == NULL ){ return; } VARIANT_BOOL bBusy; while(1){ HRESULT hr = pIE->get_Busy(&bBusy); if( FAILED( hr ) ){ // なにかエラーしている break; } if( bBusy == S_OK ){ break; } Sleep(1000); } } void *****::OnOK() { // COMの初期化 CoInitialize(NULL); HRESULT hr = pIE.CreateInstance(__uuidof(SHDocVw::InternetExplorer)); if(FAILED(hr)){ TCHAR str[256]; wsprintf(str, _T("NewIE#CreateInstance error:%x\n"), hr); ::OutputDebugString(str); return; } // pIE->PutVisible(VARIANT_TRUE); //IEの表示 pIE->PutVisible(VARIANT_FALSE); //IEの非表示 // ログイン pIE->Navigate(_T("https://login.yahoo.co.jp/config/login")); IEBusyWait(); //Htmlドキュメントのオブジェクト取得 MSHTML::IHTMLDocument2Ptr pHtmlDoc; pHtmlDoc = pIE->GetDocument(); //Formsタグのオブジェクトを取得 MSHTML::IHTMLElementCollectionPtr pHtmlCol = pHtmlDoc->forms; // "login"というフォームの0番目を指定 COleVariant data; IDispatch *ppvdispForm; data.SetString("login_form", VT_BSTR); pHtmlCol->raw_item(data, COleVariant((short)0), &ppvdispForm); //特定のFormタグのDispatchオブジェクトを取得 //IHTMLFormElementクラスとFormのDispatchオブジェクトを結合 MSHTML::IHTMLFormElementPtr ppvForm; ppvdispForm->QueryInterface(__uuidof(MSHTML::IHTMLFormElement), (void**)&ppvForm); // "username"というInputの0番目を指定 //Formタグ内のInput(type = "text")へ文字列を格納 IDispatch *ppvdispText; MSHTML::IHTMLInputElementPtr ppvInput; data.SetString("username",VT_BSTR); ppvForm->raw_item(data, COleVariant((short)0), &ppvdispText); ppvdispText->QueryInterface(__uuidof(MSHTML::IHTMLInputElement), (void**)&ppvInput); //取得したForm内に存在するInputオブジェクトを取得 ppvInput->value = "username"; // "password"というInputの0番目を指定 IDispatch *ppvdispTextPass; MSHTML::IHTMLInputElementPtr ppvInputPass; data.SetString("passwd",VT_BSTR); ppvForm->raw_item(data, COleVariant((short)0), &ppvdispTextPass); ppvdispTextPass->QueryInterface(__uuidof(MSHTML::IHTMLInputElement), (void**)&ppvInputPass); ppvInputPass->value = "pass"; // Submit! ppvForm->submit(); IEBusyWait(); // 後始末 これをしないとアサートしますよ pHtmlCol = NULL; pHtmlDoc->close(); pHtmlDoc = NULL; if( pIE != NULL ){ pIE->Quit(); } pIE = NULL; // COM解放 CoUninitialize(); }