Formタグ内のInput(type = "text")へ文字列の格納と取得




【サンプル】

//Internet Explorer操作用タイプライブラリの取り込み(Visual C++ .Net 2003、WindowsXP、IEのVersion = 6.0)
#import "C:\WINDOWS\system32\shdocvw.dll" rename("FindText", "FindTextIE")
#import "C:\WINDOWS\system32\mshtml.tlb" rename("TranslateAccelerator","TranslateAcceleratorHTML")

//IE操作用オブジェクトの宣言
SHDocVw::IWebBrowser2Ptr pIE;


//IEの起動
void Cvc_ie_InputTextDlg::OnBnClickedButton1()
{
    //IEの起動
    pIE.CreateInstance(L"InternetExplorer.Application");

    //IEの表示
    pIE->PutVisible(VARIANT_TRUE);
    
    //URLを開く
    COleVariant oleURL;

    oleURL.SetString("http://localhost/vc_ie_FormTst.html",VT_BSTR);

    pIE->Navigate2(oleURL);
}

//Formタグ内のInput(type = "text")へ文字列の格納と取得
void Cvc_ie_InputTextDlg::OnBnClickedButton2()
{
    MSHTML::IHTMLDocument2Ptr pHtmlDoc;
    MSHTML::IHTMLFormElementPtr ppvForm;
    MSHTML::IHTMLInputElementPtr ppvInput;
    IDispatch *ppvdispForm, *ppvdispText;
    COleVariant data;

    //Htmlドキュメントのオブジェクト取得
    pHtmlDoc = pIE->GetDocument();

    //Formsタグのオブジェクトを取得
    MSHTML::IHTMLElementCollectionPtr pHtmlCol = pHtmlDoc->forms;

    //特定のFormタグのDispatchオブジェクトを取得
    data.SetString("TEST_FORM", VT_BSTR);
    pHtmlCol->raw_item(data, vtMissing, &ppvdispForm);

    //IHTMLFormElementクラスとFormのDispatchオブジェクトを結合
    ppvdispForm->QueryInterface(__uuidof(MSHTML::IHTMLFormElement), (void**)&ppvForm);

    //取得したForm内に存在するInputオブジェクトを取得(備考:vtMissingをNameを格納してもOKです。)
    ppvForm->raw_item(vtMissing, COleVariant((short)1), &ppvdispText);
    ppvdispText->QueryInterface(__uuidof(MSHTML::IHTMLInputElement), (void**)&ppvInput);

    //Formタグ内のInput(type = "text")へ文字列を格納
    ppvInput->value = "TEST String";

    //格納した文字列を取得
    MessageBox(ppvInput->value);

}

//ie終了
void Cvc_ie_InputTextDlg::OnBnClickedButton3()
{
    pIE->Quit();
    pIE = NULL;
}



[サンプル・プロジェクト]

(注意)
このサンプルは、Visual C++ .Net、Internet explore 6.0, MFCアプリケーションで作成されています。