WebBrowser的接口使用(200分)

  • 主题发起人 主题发起人 benbencow
  • 开始时间 开始时间
B

benbencow

Unregistered / Unconfirmed
GUEST, unregistred user!
关于webbrowser中的接口使用:
1.
用webbrowser1.document 和webbrowser1.oleobject.document 有何区别?
用document接口的get_anchors方法,返回IHTMLElementCollection接口,再用该接口的item方法时,其
两个olevariant类型的参数如何赋值,返回的IDispatch又是什么?总之,webbrowser中的许多接口和方法,是不是只能自己根据定义名称去试?各位请献招数。

2.如何使在自己程序中得到webbrowser的anchor热区的焦点?就是当用户用tab键或鼠标在热区跳转时程序能先判断处理。

清提供思路,解决方法,讨论得热烈,我会激动地再加分,先谢谢了
 
var
doc:IHTMLDocument2;
all:IHTMLElementCollection;
len,i:integer;
item:OleVariant;
begin
doc:=webbrowser.Document as IHTMLDocument2;
all:=doc.all;
len:=all.Length;
for i:=0 to len-1 do
begin
item:=all.item(i,varEmpty);
...
end;
end;
 
item 可以声明成 IDispatch ,然后再用QueryInterface接口方法来对给定对象赋予
接口指针

var
HtmlInputEle : IHTMLInputElement;

begin
....
for i:=0 to len-1 do
begin
item:=all.item(i,0);
spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle)
......
end;
 
嘿嘿,你都只有 0 分了,怎么激动的家分?
 
谢谢arant, elan,但我还有分数的呀。

请问elan,给对象htmlinputele赋予接口指针之后, 是否可以操作他的所有属性方法。
你的代码spDisp是否要定义为IDispatch类型?

另外,我如何做到像ie界面那样,navigate后,用tab键使得webbrowser的第一个
anchor热区获得焦点? 这个问题很头疼我。请各位高手帮忙
 
错了,应该是
var
spDisp : IDispatch;
HtmlInputEle : IHTMLInputElement
begin
....
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle))then
//这里谢你的代码

因为item有好多种类型,所以最好对每一种都声明一个变量,像这里的HtmlInputEle 就是
一个网页中的input框。对每一种类型(或者只用你想处理的那几种也可以)用
spDisp.QueryInterface(类型接口 ,接口变量)) 来判断是否该类型,然后再访问该类型
变量的属性和方法。


anchor热区我也觉得很奇怪,每次都返回 0 个,不知是什么原因
 
再请问,

anchors的item(HTMLElementCollection)的下一层属性有哪些,怎么知道。
(像all的ITEM有tagname等)
 
还不给分呀!
**************************IHTMLElementCollection**********************
This interface provides access to a collection of element objects.
This collection is indexed first by name, then by id. If duplicate names are found, a collection of those named items is returned. Collections of duplicate names must subsequently be referenced by ordinal position.
A zero-based collection, in source order, of all elements in a given form. This collection can contain any combination of INPUT, SELECT, and TEXTAREA elements.
IHTMLElementCollection Methods toString put_length get_length
get__newEnum item tags
***************IHTMLElementCollection.Item****************************
HRESULT item(
VARIANT name,
VARIANT index,
IDispatch **pdisp
);


 
>anchors的item(HTMLElementCollection)的下一层属性有哪些,怎么知道。
>(像all的ITEM有tagname等)

这些属性和方法你完全可以打开 mshtml.pas来看嘛
 
多人接受答案了。
 
后退
顶部