关于TWebBrowser和Delhpi之间的通讯问题,在线等待,急
简单描述一下。
一个窗体上有一个TWebBrowser,里面显示一个html页面,html页面里有若干控件。
问:1 如何让程序知道用户在TWebBrowser里的动作,比如点击页面里的按钮。
2 程序如何修改TWebBrowser里面页面的一个数据,比如修改页面里某个lable的值。
请各位大虾指点迷津,问题停留48小时,麻烦给出事例代码,最好有中文注释。谢谢
48小时后若无正确答案,分数将给帮忙顶的朋友。谢谢。
问题点数:100、回复次数:15Top
1 楼pilicat(Delphi迷)回复于 2005-02-03 23:31:23 得分 0
你可以通过Document对象来实现操作的。Top
2 楼pilicat(Delphi迷)回复于 2005-02-03 23:32:06 得分 30
例如:
放Button1、Button2到Form上
放WebBrowser1到Form上
在Button1的OnClick事件中写代码:
WebBrowser1.Navigate('http://www.google.com/intl/zh-CN/');
在Button2的OnClick事件中写代码:
Var
aDoc:OleVariant;
begin
if WebBrowser1.ReadyState<>READYSTATE_COMPLETE then
begin
ShowMessage('请先装载页面!');
exit;
end;
aDoc:=WebBrowser1.Document;
aDoc.f.q.value:='我要查询的关键字';
aDoc.f.submit;
注意,要先点击Button1,等页面打开后,再点击Button2
大量电脑书籍下载:
http://www.netyi.net/in.asp?id=ForMoreU
Top
3 楼pronet(戏游子)回复于 2005-02-04 14:05:41 得分 0
谢谢,第二个问题知道了.
现在我想了解第一个问题.
比如,html中的javascript可以得到应用程序中的对象,但不是用new ActiveXObject()来实现的Top
4 楼pronet(戏游子)回复于 2005-02-04 22:22:01 得分 0
我现在已经能操作WebBrowser里的东西,但我希望在用户操作WebBrowser的时候,我的程序有所反应,比如能将我程序的某个对象送到WebBrowser里那么脚本就可以通过这个对象给我的程序发消息。
或者说个具体的例子。我希望知道用户鼠标停留在哪个按钮或超连接上面(用户未进行点击动作)。
希望大家帮忙或给出思路。谢谢。Top
5 楼pronet(戏游子)回复于 2005-02-05 20:46:44 得分 0
upTop
6 楼notbug(小虫子)回复于 2005-02-05 22:09:42 得分 0
我也有同样的问题,密切关注!Top
7 楼jiangsheng(蒋晟.Net[MVP])回复于 2005-02-05 22:26:35 得分 40
http://www.euromind.com/iedelphi/embeddedwb/ongetexternal.htmTop
8 楼zswang(伴水清清)(专家门诊清洁工)回复于 2005-02-05 22:35:50 得分 0
//IHTMLDocument2::elementFromPoint()
var
vHTMLElement: IHTMLElement;
vPoint: TPoint;
begin
if not Assigned(WebBrowser1.Document) then Exit;
vPoint := Mouse.CursorPos;
vPoint := WebBrowser1.ScreenToClient(vPoint);
vHTMLElement := (WebBrowser1.Document as IHTMLDocument2
).elementFromPoint(vPoint.X, vPoint.Y);
if not Assigned(vHTMLElement) then Exit;
Caption := vHTMLElement.tagName;
vHTMLElement := nil;
end;
Top
9 楼halfdream(哈欠)回复于 2005-02-06 11:07:58 得分 0
关注,年后再看.
Top
10 楼Kshape(C/C++初学者~~~~)回复于 2005-02-06 12:22:26 得分 0
好多星星Top
11 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2005-02-06 12:45:45 得分 0
To 楼主:
jiangsheng的方法是最好的。
Top
12 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2005-02-06 12:46:35 得分 10
像是拍马屁 =_=
以前也处理过类似的问题。就是用EmbededWB的OnGetExternal里返回一个自动化对象来实现的。Top
13 楼notbug(小虫子)回复于 2005-02-08 20:54:09 得分 20
使用JScript,从IE4开始,微软提供了一个ICustomDoc接口,ICustomDoc的SetUIHandler允许用户设置一个基于IDocHostUIHandler的接口来接管界面处理器,在IDocHostUIHandler提供了很多的虚拟方法,需要重载他们实现不同的定制功能,重载GetExternal方法来扩展IE DOM,如果成功的扩展了DOM,那么就这可以编写脚本代码来实现与本地程序交互。
请大家参考文章:http://siney.nease.net/article/newintf.htm
Top
14 楼pronet(戏游子)回复于 2005-02-14 19:36:18 得分 0
谢谢各位,我已经找到了方法,但还是要感谢各位的关注。
最近没空上网。晚来几天给分,请原谅~Top
15 楼langzihuitou(浪子回头)回复于 2005-03-16 15:04:40 得分 0
请问有谁知道WebBrowser 的时候点击页面下载文件的时候不想弹出另存为的按钮的时候应该怎么写?Top




