C++Builder XEでTCppWebBrowserを使った簡単なサンプルを書いてみました。
フォームにTCppWebBrowserとTButtonを2つ配置します。
フォームのコンストラクタで、指定したページ(http://search.yahoo.co.jp/)を表示します。
#include <mshtml.h>
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
CppWebBrowser1->Navigate(L"http://search.yahoo.co.jp/");
}
Button1を押すと検索キーワード入力欄に値を設定します。
検索キーワード欄は次のようなタグになっています。
<input value="" name="p" id="yschsp" size="42"
Button1のOnClickイベントを追加します。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TComInterface<IHTMLDocument3> pDoc;
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument3, (void**)&pDoc);
//idがyschspの要素を取得する
TComInterface<IHTMLElement> element;
pDoc->getElementById(L"yschsp", &element);
//inputタグの型に変換する
TComInterface<IHTMLInputElement> input = element;
//値を設定する
input->put_value(L"C++Builder");
}
Button2を押すとフォームをSubmitします。
フォームは次のようなタグになっています。
<form name="sbn" id="sbn" class="searchForm
Button2のOnClickイベントを追加します。
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TComInterface<IHTMLDocument3> pDoc;
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument3, (void**)&pDoc);
//idがsbnの要素を取得する
TComInterface<IHTMLElement> element;
pDoc->getElementById(L"sbn", &element);
//formタグの型に変換する
TComInterface<IHTMLFormElement> form = element;
//Submitする
form->submit();
}
アプリケーションを起動したところ。
Button1を押すと、検索キーワード欄に値が設定される。
Button2を押すと、フォームがSubmitされて、検索結果が表示される。
追記
TComInterfaceクラスについては次のページをご覧ください。
はじめまして。link引用関係がはっきりしませんが、C++Builder質問掲示板で、ご回答頂いた方でしょうか。名前と日付と内容から判断しました。
そうであれば、ありがとうございました。そうでなければ、失礼をお詫びするとともに以下は無視してください。
試用版c++BilderXE2を入手し、動くようになりましたので、試してみたところ動きました。
ポイントはTCppWebBrowserとTComInterfaceかなと思い、調べていて、こちらにたどりつきました。
前者はなんとなくわかるのですが、TComInterfaceはよくわかりません。調べているところです。
掲示板にも同じ内容を投稿しますがお許しください。
TComInterfaceはCOMインターフェースのラッパーです。
オブジェクトがコピーや削除された時に適切にAddRef/Releaseを実行します。
簡単に言うと、自動でメモリの管理を行ってくれます。
ソースコードを見ると簡単なラッパーであることがわかりますが、試用版にはソースコードは付属しませんでしたね。
TComInterfaceを使わなくてもほとんど同じように記述できます。