Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:网络技术    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  delphi中的web form提交  
 
delphi中的web form提交

问题:使用delphi +twebbrowser进行页面访问的时候.如何最后提交填写的表单.

一般应该是很简单的.

procedure websubmit(WB: TWebBrowser; FieldName: string);
var
I: Integer;
FormNr, ItemNr : integer;
TheForm : Variant;
o : Olevariant;

begin
//判断是否存在form对象
if WB.OleObject.Document.All.Tags('FORM').Length = 0 then
begin
ShowMessage('Error: no FORM found on page');
Exit;
end;

for FormNr := 0 to WB.OleObject.Document.Forms.Length - 1 do
begin
//取得每一个form对象
TheForm := WB.OleObject.Document.Forms.Item(FormNr);

for ItemNr := 0 to TheForm.Length - 1 do
begin
try
//根据form对象中的的元素名确定是否是需要提交的那个按钮
//form对象包括input,select button等
//比如 begin
ShowMessage('Error: no FORM found on page');
Exit;
end;

try
//提交指定名字的标签
Wb.oleobject.document.all.namedItem(FieldName).click;
except
exit;
end;

end;

如此极大简化了提交同时也满足了所有可能标签的提交动作.
一般而言使用twebbrowser来提交个人认为是一种比较好的方式.因为如果使用idhttp,可能出现用户页面需要通过调用script做一些处理后提交的问题.使用idhttp是无法捕获的.
而使用twebbrowser则完全模拟一个用户的操作过程.可以减少对页面的分析难度.做到准确提交.

不过在程序提交的时候还有一个问题必须要注意.如果程序本身还没有能运行完成也就是说twebbrowser的状态还没有complete的时候,千万不要通过程序提交那样会出现异常的.这点千万注意呀.

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站