由程序自动生成表单如何自动提交?(50分)

B

Boblee

Unregistered / Unconfirmed
GUEST, unregistred user!
net.cn我想大家都知道是提供了域名注册服务。我经常有很多域名要注册,如果一次一个,
直接在IE里注册就行了,如果怕每次输麻烦,最多搞个自动填表软件如我现正在用的RoboForm
,还挺好的,但如果是一次要注册200个域名,我想再自动填表也够我呛的了,因此我就想用
delphi开发一个自动域名注册系统,能实现的前提是因为net.cn上域名注册也是用ASP传参数的
方式,所以这个表单我用程序形成,并用注册信息中除域名不一样,其它信息都一样,所以我就
可以用程序在几秒钟这类为我注册几百个域名。现在的问题是:
1.程序界面我已完成,注册所需的信息我也能动态提供,问题在于,我无法提交成功,我之前
在这儿先查找了一大堆的关于表单自动提交的帖子,综合起来其中就用了二种方法:
一种是用如TNMHTTP中的post,还有就是用TWebBrowser的oleobject.document。我试了这两种,但
结果都不成功。我用TNMHTTP的POST,不行,我一看别人的帖子说是无法传input中的值,在我的程序中
也好象反应这个原因,因为的用这个方法提交,从net.cn返回的tnmhttp.body中错误是我没有填一个input
中的值,也就是它根本无法query出我传过去的值。我post的内容是这样的:
。。。。
//程序动态形成所有所需的参数值
postdata := '?e1='+value1+'&e2='+value2 .....
myhttp.post('http://www.net.cn/cgi-bin/formapp.cgi',postdata);
...
这无法成功。于是我想用TWebBrowser,我是这样做的,让程序生成HTML代码如
bodyhtml :=
'<html>'+
'<body>'+
....
'<input type="text" name="e1" value="'+value1+'">'+
'<input type="text" name="e2" value="'+value2+'">'+
....
'<input type="submit" name="go" value="submit">'+
'</body>'+
'</html>'

现在的问题是,我不知如何在没把这HTML代码保存为文件的情况下,在内存里如何用TWebBrowser
自动提交这个form.

哪位大虾是否能有解决方法或有其它的提交方式,请告之,谢谢。分不够,找到答案后,再奉上。

 
晕,webbrowser不是这么做滴.....

应该是:
var
o : Olevariant;
begin
WebBrowser1.Navigate('你要注册的网址');
//找到登录用户名的输入框
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0);
o.value := 'TEST';

//找到登录密码的输入框
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('LoginPassword',0);
o.value := 'TEST'

//第一个表单提交
WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.Forms.Item(0, 0).submit;

{

//或者用指定表单名称提交

o :=WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex)..document.all.item('Login',0);
o.Click; //点击操作,对其它对象也可同样操作
}
end;
--------------------------------------------
TNMHTTP的POST的格式你得用编码自己编滴...
所以用WEBBROWSER较爽滴.....
 
谢谢。我试先,如果可行,马上给分。在试之前我还想问题一下,如果用你的方法,现在net.cn
要先登录才能注册域名,那如何实现自登录且只登录一次,接下来自动提交域名注册信息呢?
 
自已做脚本啊...
很容易的,做几个FUNCTION,然后根据ReadyState或BUSY的状态决定是否下一步,或者是出错了..
我最近在写一个自动上传的说..
 
接受答案了.
 
顶部