我用TWebBrowser打开一个网页。网页上有很多Text,Radio和提交的Submit的Button,这些都没得说吧。其他问题就不争论怎么实现,我现在想实现的东西是:1、我可以让Text、Radio之类的东西获得焦点,用PossSendMessage实现的,但是我无法知道是哪个获得了焦点;
2、我想模拟鼠标点击那个Submit,进行表单的提交,而不想使用Form.Submit或者获得Submit的接口执行Click方法。请教大虾们给个思路!
能提供代码的大虾们万分感激!一直没研究过TWebBrowser的应用。工作中也用不上,所以了解很少。谢谢!
2、我想模拟鼠标点击那个Submit,进行表单的提交,而不想使用Form.Submit或者获得Submit的接口执行Click方法。请教大虾们给个思路!
能提供代码的大虾们万分感激!一直没研究过TWebBrowser的应用。工作中也用不上,所以了解很少。谢谢!
解决方案 »
- 关于函数参数指针的使用
- Invalid use of keyword Token:when请问是怎么回事?
- 相求用Delphi编写的由Excel导入到sqlServer里的代码!着急了!!不够分再给!!
- 如何表示十六进制数据
- 关于TShellTreeView的几个问题
- 毕业设计 课题是分布式售票管理系统 请大家提供思路!非常谢谢大家!!
- 怎样计算数据库中符合条件t=1的纪录的条数,并将数量复制给edit1
- 安装控件的时候的错误 找不到DsgnIntf.dcu;
- 急求《软件产品开发文档编写指南》,email: [email protected]
- 新手-SOS游少爷(关于DLL)
- 动态创建一个chart1图表,并导到word里
- 请哪位高手知道:怎样为不规则窗口描边?
可以看看.
类似的代码我也见到过,不过据说如果在click或者submit之前有脚本的话,那用这两个方法脚本并不执行。
所以我要直接模拟鼠标点击!很感谢您的回复,希望能继续讨论!
但如果照你说的,应该是一个js脚本,例如校验代码之类的东西.
如果你是针对特定网页(网站)进行的应用,那应该可以在分析网页源代码之后,将delphi代码固定下来.应该没有问题.
例如:直接提交校验后的网页
但是如果那个网页再次改变呢?我还要再次分析源代码,然后再修改我的程序,对吧。但是点击那个submit,肯定是不会改变的过程,无论怎么提交(是不是有脚本),如果在网页上操作,都需要用鼠标去进行点击的。所以我想直接用模拟鼠标点击的办法直接些。其实我最开始就是分析了那个网页的源代码,然后使用了submit或者click来进行提交,开始也成功了。但是那个网页后来又改变了,我分析了很久,没找到具体修改的地方(可能是隐藏到后台的什么类里了吧,我也说不清楚)。用原来的方法怎么也提交不上,但是用鼠标去点那个submit,却一点问题没有。
现在的网页代码标准新增了许多,再加上结合js脚本,几乎所有的标记都可以对鼠标的点击事件作出响应.
确实有些困难.
可以上Gmail:[email protected]你看怎么联系方便?
sName := TListBox(lstSZName[nNowOutIndex]).Items[poi^.SZIndex_Next];
nPos := Pos('(',sName);
input := (doc.all.item('posX',0) as IHTMLInputElement);
input.value := Copy(sName,nPos + 1,Pos(',',sName) - nPos - 1);
//
nPos := Pos(',',sName);
input := (doc.all.item('posY',0) as IHTMLInputElement);
input.value := Copy(sName,nPos + 1,Pos(')',sName) - nPos - 1);
RichEdit3.Lines.Add('数据填写完毕...');
//则两句是因为网页上的那个submit按钮,如果鼠标不放上去,那个按钮是灰色,即不可用的
//这两句也是我参考别人的代码,可以让按钮在鼠标不移动到上面去的时候变为可用
Ftn_FB:=(doc as IHTMLDocument3).getElementById('batBut');
Ftn_FB.removeAttribute('disabled',0);
//
RichEdit3.Lines.Add('点击按钮...');
//IHTMLDocument3(doc.all.item('batBut',0)).focus;
form := (doc.all.item('actionForm',0) as ihtmlformelement);
form.submit;
RichEdit3.Lines.Add('点击按钮完毕...');
=============================以上是我写的控制代码=====================================
... ...
<form id="actionForm" action="?x=LtIrLKLn2Ya2bzMVpDgMMrvMHkMrFv1k3hrTKXEiooWXFTRUCKb4sw" target="swin" method="post"><div style="display:none"><input type="hidden" name="actionForm_hf_0" id="actionForm_hf_0" /></div>
... ...
这中间是要填写的text、要选择的radio、及要填写的xy坐标
... ...
<p class="center" style="padding-top:10px;" onmouseover="_id$('batBut').disabled=false;"><button type="submit" id="batBut" disabled="true">确认</button></p>
</form><div id="askMsgDiv" class="hide">
<h4 class="msg_top">确认:</h4>
<iframe name="swin" id="swin" class="msg_bottom" frameborder="0"></iframe>
</div><div id="teamDiv" class="hide">
<h4 class="msg_top">确认:</h4>
<iframe name="twin" id="twin" class="msg_bottom" frameborder="0"></iframe>
</div>
... ...
===============================以上是那个网页的代码(我捡中间控制部分)===============================这个网页要登录进才能看到这个网页,所以……
你看上面提供的信息是否够用?麻烦了,谢谢先!