请如何让自己的程序与浏览器(IE,NC)通讯,例如从IE中的网页(HTM)中读取数据,或把程序中的数据送到IE中去,请各位大侠指教。(100分)

  • 主题发起人 主题发起人 taka
  • 开始时间 开始时间
T

taka

Unregistered / Unconfirmed
GUEST, unregistred user!
请如何让自己的程序与浏览器(IE,NC)通讯,例如从IE中的网页(HTM)中读取数据,或把程序中的数据送到IE中去,请各位大侠指教。
 
刚刚答过那个关于做proxy的问题,所以有一点思维定势,我想先用PROXY截获数据,
然后再把数据(你也可以先处理数据!)发给浏览器,不就可以实现通讯了吗?!
 
这个问题好象满怪的,呵呵。
本来取得一个窗口的信息应该,也许不太难。呵呵。
可 IE 这东西,很麻烦,我也想听听。上次屏幕取词的题目,幕后解决了,
不知为何。
把程序的数据发到 IE 是什么意思?
 
怎么听起来有点像CGI程序?CGI不就是将程序结果生成的网页发送到浏览器中?
或者用ActiveX,将程序嵌入到IE中。
不知是不是这一目的?说的不对,请多多包涵!
 
如可以,请给一份答案。
 
我的意思是用程序把数据自动填入IE中的表格里去,从IE中取数据也是指
从网页中取我想要的内容输出到程序中,注意也是自动取,不是屏幕
取字。所以我提问题时说是与浏览器通讯的问题,而且是Client端,
不是有关CGI的问题,请各位再多指教。
 
WoWo,放假了,教育网没人了……
 
我知道你是想与本地机浏览器通讯,
可以写骗取密码的hacker程序了!
xixi...........
你可以查一下cache.
 
现在有的那些自动添表单的程序也是
要鼠标点的,不是自己去取...
 
To zx:不是想做hacker程序,只在网上填写表格有些烦,想做个自动填表的工具,想在程序中识别表格的项目,然后从数据库中取数据把能填的项目自动填上。
那些用要鼠标点的自动添表单的程序我也见过,现在就是想做一个自动的,您老有什么提议吗?
 
xixi... 我不老!
要自动不容易.
表单输入项,你如何判断
哪个格填哪个内容呢?
按你的思路,那么取浏览器的内容到是小问题了,
关键是如何判断input box里填什么内容!
我觉得他们那些用鼠标点的其实是有道理的,
你可以从其他方面提高你的程序嘛!
比如:鼠标一移到inputbox上,就象金上词霸一样
出现半透明窗口,然后可以选择... 等等..
xixi..

 
这个问题很有意思, 很有使用价值呀, 我也正在研究直接通过程序向浏览器的表单添信息, 还没有一个头绪呢.
 
人家写表单的时候没有什么规律,标准
不太可能吧!
 
to zx:我觉得要识别填写内容不会很难,因为那些表格的内容大多是NAME,
BIRTHDAY,ADDRESS等等,反正能填就填,数据库中没有的就不填。
我觉得如何取数据和把数据填回去才是难点。
 
IE5的功能已经不错了呀
有下拉菜单让你选的呀。
呵呵,不过这个问题咱也感兴趣,听听!
 
To huizhang:坛主对此也有研究吗?给大伙儿讲些心得体会体会吧。
 
IE5中倒是真有类似的功能,比如我现在登录进入本论坛的时候,我的密码就会被自动填好。
我的初步想法是:应该实现的像Delphi里面的编辑器那样。
WindowFromPoint得到鼠标下面的窗口,然后得到这个窗口里面的激活的输入框,
再找到这个窗口前面的窗口(Tab顺序在前面的),分析出里面的域名来,
(比如名字, Name等等),然后从数据库中找到以前的值做出动态列表
 
我想的方法有两种:
1、应用API的FindWindow找到IE窗口,然后SENDKEY即可(我用DELPHI编过向计算器发送击键的程序)
2、应用DELPHI自己作一个浏览器,获取原码后添加
我倾向于方法一,绝对可以实现,但编程上需要花一点小技巧。
 
我认为microsoft应该在DOM里面做到了这一点。
理论上来说,IE应该是一个大的COM 对象,只要找到了这个对象,就可以
处理他的内容了。
这扯远了,可以作为研究方向吧。
 
抛砖引玉(非标准解决方案):
首先引入Microsoft Internet Controls.接着,在你的程序里,
uses SHDocVw_TLB;
然后,定义一个变量ie:IWebBrowser2;
ie:=CoInternetExplorer.Create;
ie.Visible:=true;
这样就创建了一个IE实例,它处于你的Delphi程序的控制之下.
操作方法和TWebBrowser差不多(不过多了一些功能).详细文档见
ActiveX SDK.
从这儿开始是非标准方案:
每次文档载入之后,你都响应这个事件.察看现在的URL.自己把它
从Cache中读出来.按需要修改,例如那些输入框中可以加上"value=XXX"
再把修改后的文件放回Cache(我假设你熟悉Internet api).最后,让IE再
读一次即可.当然如果有困难的话,可以只把它存进一个temp文件.但要注意
把所有的相对路径改为绝对路径.特别是form里面的action参数.
我想标准方案应该是从ie.Document属性下手.可惜本人功力不够,如果
哪位大虾知道怎么和Activedo
cument Object打交道,怎么从中找到Form.
可千万别保持沉默啊.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部