求解把Delphi中的数据传递到IE浏览器中所打的网页中对应的输入框内? ( 积分: 100 )

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

fuzid

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有什么方法把Delphi中的数据传递到IE浏览器中所打的网页中对应的输入框内?
 
有没有什么方法把Delphi中的数据传递到IE浏览器中所打的网页中对应的输入框内?
 
objecthelper
 
首先,我觉得问题说得不太清楚。
第一,你那个Delphi程序的类型是什么?
第二,你那个网页是已经打开了,还是通过你这个delphi程序打开的

delphi可以制作cgi类型的程序,我想可以完成你要的功能
 
用EmbeddedWB1控件打开页面
var IDoc1: IHTMLDocument2;
iELC : IHTMLElementCollection ;
i:integer;
spDisp: IDispatch;
HtmlInputEle : IHTMLInputElement;
S2 : string;
oIDocment: IHTMLDocument2;
IHtmlWin:IHTMLWindow2;
begin
oIDocment := EmbeddedWB1.Document as IHTMLDocument2;
if (oIDocment.url='http://10.113.58.252/index.html') and (count=1) then
begin
EmbeddedWB1.Document.QueryInterface(IHTMLDocument2,IDoc1);
if idoc1<>nil then
begin
ielc:=idoc1.Get_all;
for i:=0 to ielc.length-1 do
begin
spDisp := ielc.item(i, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle))then
with HtmlInputEle do
begin
S2:=Type_;
S2:=UpperCase(S2);
if (StrComp(PChar(S2),'TEXT')=0) or (StrComp(PChar(S2),'PASSWORD')=0) or (StrComp(PChar(S2),'PASSWORD')=0) then
begin
S2:=name;
if (StrComp(PChar(S2),'F_USER')=0) then
value :=F_dl.Edi_username.Text;
if (StrComp(PChar(S2),'F_PASS')=0) then
value :=F_dl.Edi_password.Text;
end;
end;
end;
end;
 
用delphi的控件生成网页,生成时用参数伟递数据
 
我要完成类似以下的功能比如说:我用微软IE打开大富翁的登陆窗口,有用户名和密码的输入框,然后我只要在Delphi写的程序里点击按钮就可以把Delphi里的对应数据赋到IE中相应的输入框里。
 
老问题了,参见:
// 填写
var
HtmlDoc:IHTMLDocument2;
InputText1,InputText2,InputText3,InputText4,InputText5:IHTMLInputTextElement; // Edit框
TypeElement:variant;
I:Integer;
begin
webbrowser1.Navigate(edit1.Text);
exit;
HtmlDoc:=WebBrowser1.Document as IHTMLDocument2;
for i:=0 to HtmlDoc.all.length-1 do
begin
TypeElement:=Htmldoc.all.item(i,varempty);
if Uppercase(TypeElement.tagName)='INPUT' then
begin
if Uppercase(TypeElement.type)='TEXT' then // 填 Edit 框
begin
InputText1:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText1.name='username' then InputText1.value:='abc';
InputText4:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText4.name='email' then InputText4.value:='xxxx@163.com';
InputText5:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText5.name='url' then InputText5.value:='http://www.xxx.com';
end;

if Uppercase(TypeElement.type)='PASSWORD' then // 填密码框
begin
InputText2:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText2.name='password' then InputText2.value:='12345678';
InputText3:=HtmlDoc.all.item(i,varempty) as IHTMLInputTextElement;
if InputText3.name='password2' then InputText3.value:='12345678';
end;
end;
end;
end;

// 提交
var
HtmlDoc:IHTMLDocument2;
myitem:Olevariant;
i:integer;
begin
myitem := WebBrowser1.Document;
for i := 0 to myitem.all.length - 1 do
begin
if myitem.all.item(i).tagName = 'INPUT' then
if Uppercase(myitem.all.item(i).type)='SUBMIT' then
if Uppercase(myitem.all.item(i).name)='OK' then
myitem.all.item(i).click;
end;
end;
 
另:下面的函数可以自动完成填写text的值,怎么设置option ,radio,checkbox的值。
function TForm1.FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var
i, j: Integer;
FormItem: Variant;
begin
Result := False;
//no form on document
if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
begin
Exit;
end;
//count forms on document
for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
try
//when the fieldname is found, try to fill out
if FormItem.Item(j).Name = FieldName then
begin
FormItem.Item(j).Value := Value;
Result := True;
end;
except
Exit;
end;
end;
end;
end;
//转载
 
if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then

Length 值一直为0啊,[?]
 
多人接受答案了。
 
后退
顶部