翻译求助,从Delphi到C++Builder: 关于TWebBrowser(200分)

  • 主题发起人 主题发起人 FangQ
  • 开始时间 开始时间
F

FangQ

Unregistered / Unconfirmed
GUEST, unregistred user!
下面这段经典语句,哪位知道如何在C++Builder中实现,多谢!!!

procedure TForm1.Button1Click(Sender: TObject);
var
doc:IHTMLDocument2;
all:IHTMLElementCollection;
item,itemc:olevariant;
I:Integer;
begin
try
doc:=WB_main.Document as IHTMLDocument2;
all:=doc.all;
item:=all.tags('INPUT');
itemc:=item.item(5);
itemc.innerText:=Edit1.text;
itemc:=item.item(6);
itemc.innerText:=Edit2.text;
itemc:=item.item(7);
itemc.click;
except

end;

end;
 
这段程序是取得所有Item的inerText放到Memo1中,
你那样用序号直接访问可不大好,很容易出错的。
需要 #include "mshtml.h"

void __fastcall TForm1::Button1Click(TObject *Sender)
{
IHTMLDocument2* pDoc;
IHTMLElement* pEl;
IHTMLElementCollection* pEC;
BSTR Html;
HRESULT hr;
IDispatch* pDisp = WebBrowser1->Document;
hr = pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc);
if (hr == S_OK)
{
hr == pDoc->get_all(&pEC);
if (hr == S_OK)
{
long Count;
pEC->get_length(&Count);
for (int i=0;i < Count;i++)
{
hr == pEC->item(OleVariant(i),OleVariant(0), &pDisp);
if (hr == S_OK)
{
hr == pDisp->QueryInterface(IID_IHTMLElement, (void**)&pEl);
if ((hr == S_OK) && (pEl != NULL))
{
pEl->get_innerText(&Html);
Memo1->Lines->Add(AnsiString(Html));
}
}
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
WebBrowser1->Navigate(BSTR(WideString("www.delphibbs.com")));
}
 
太感谢了!
 
To unreal:
在CB中还是搞不懂如果在一个空里面填一个串,比如在目标html文件中的
类似于一个下面的Editbox(item)中:
<input type="text" name="loginName" size="10" maxlength="20" value="">
中填上"anonymous",该如何用pEC找到这个item并填上值呢?

多谢!
 
后退
顶部