关于自动填写浏览器中的表格的问题???(50分)

  • 主题发起人 主题发起人 peacekeeper
  • 开始时间 开始时间
P

peacekeeper

Unregistered / Unconfirmed
GUEST, unregistred user!
  前面已经有人讲过如何填写浏览器中的表格了。但是,
所举的例子不够全面。例子如下:
procedure TmainForm.BB_writeClick(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(0);
itemc.innerText:=sg_input.Cells[1,1];
itemc:=item.item(1);
itemc.innerText:=sg_input.Cells[1,2];
except

end;
end;
  在上面的例子中,怎样知道TWebBrowser控件WB_main所
指的网页上有多少个INPUT???以及每个INPUT的TYPE???
怎样知道每个INPUT的name呢???
  好象这些关于接口IHTMLDocument2的资料,在Delphi 5
的帮助中找不到!
 
不够分,尽管说,可以加。
 
大虾呢?
 
好象没人理我。
 
IHTMLDocument2中的资料到MSDN中找
奇怪,怎么谁都在找IHTMLDOCUMENT2得资料?
 

for I:=0 to Item.count-1 do
begin

itemc:=item.item(i);
.......
end;
 
怎样知道每个INPUT的name呢???
 
itemc.name

以下代码获取input得数值,你参考一下吧
procedure TForm1.PutData;
var
ShellWindow: IShellWindows;
nCount: integer;
spDisp: IDispatch;
i,j,X: integer;
vi: OleVariant;
IE1: IWebBrowser2;
IDoc1: IHTMLDocument2;
iELC : IHTMLElementCollection ;
S,S2 : string;
HtmlInputEle : IHTMLInputElement;
HtmlSelEle : IHTMLSelectElement;
begin
ShellWindow := CoShellWindows.Create;
nCount := ShellWindow.Count;

for i := 0 to nCount - 1 do
begin
vi := i;
spDisp := ShellWindow.Item(vi);
if spDisp = nil then continue;
spDisp.QueryInterface( iWebBrowser2, IE1 );
if IE1 <> nil then
begin
IE1.Document.QueryInterface(IHTMLDocument2,iDoc1);
if iDoc1 <> nil then
begin

ielc:=idoc1.Get_all;

for j:=0 to ielc.length-1 do
begin
Application.ProcessMessages;
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle))then
with HtmlInputEle do
begin
//htmlinputele.name 就是取得这个 input 的 name
S2:=Type_;
S2:=UpperCase(S2);
//我把所有的input都填上 try , checkbox 都打勾
if (StrComp(PChar(S2),'TEXT')=0) or (StrComp(PChar(S2),'PASSWORD')=0) then
value :='try' //S:=S+#9+Value
else if StrComp(PChar(S2),'CHECKBOX')=0 then
begin
checked := True;
end;
end;
if SUCCEEDED(spDisp.QueryInterface(IHTMLselectelement ,HtmlSelEle))then
with HtmlSelEle, Memo1.Lines do
begin
S:=S+#9+IntToStr(selectedIndex+1); //这个是获取数据了
//HtmlselEle.name 就获得这个selectelement地name了
end;
end; //END FOR
Memo2.Lines.Add(S);
exit;
end;
end;
end;
end;


 
你得到他的html源文件,自己直接加工一下,就可以满足你的要求了
 
对radio,怎样处理???
 
HtmlOpt : IHTMLOptionButtonElement;


if SUCCEEDED(spDisp.QueryInterface(IHTMLOptionButtonElement ,Htmlopt))then
with HtmlOpt do
begin
//do ur code here
end;
 
sorry,这几天没收到大富翁的mail通知
 
接受答案了.
 
后退
顶部