? 用H1:=findwindow(nil,'某网页标题')后,如何遍历该网页窗口内的所有控件,然后对各控件发送消息? (gyhong )

解决方案 »

  1.   

    得到网页文档的接口:
    网页文档的接口为IHTMLDocument2,可以通过调用IE COM对象的get_Document方法来得到网页 
    的接口。使用如下的语句:hr = m_sp WebBrowser2->get_Document(& 
    spDisp);CComQIPtr<IHTMLDocument2,&ⅡD_IHTMLDocume nt2> spHTM 
    L;spHTML = spDisp; 
        这样我们就得到了网页对象的接口,然后我们就可以对网页进行 
    分析,比如通过IHTM LDocument2提供的方法get_URL可以得到和该网 
    页相关的URL的地址值,通过get_forms方法可以得到该网页中所有的F 
    orm对象的集合。 
        实际上W3C组织已经制定了一个DOM(Document Objec Model)标准 
    ,当然这个标准不仅仅是针对HTML,同时还是针对XML制定的。W3C组织 
    只是定义了网页对象的接口,不同的公司可以采用不同的语言和方法 
    进行具体的实现。按照W3C组织定义的网页对象被认为是动态的,即用 
    户可以动态对网页对象里面所包含的每一个对象进行操作。这里的对 
    象可以是指一个输入框,也可以是图像和声音等对象。同时按照W3C的 
    正式文档的说明,网页对象是可以动态增加和删除的。事实上,很少有 
    厂商实现了DOM定义的所有功能。微软对网页对象的定义也基本上是 
    按照这个标准实现的。但是当前的接口还不支持动态增加和删除元素 
    ,但是可以对网页中的基本元素进行属性的修改。比如IHTMLElementC 
    ollection表示网页中一些基本的元素的集合,IHTMLElement表示网页 
    中的一个基本的元素。而像IHTMLOp tionElement接口就表示一个特 
    定的元素Option。基本的元素都有setAttribute和geAtt ribute方法 
    来动态设置和得到元素的名称和值。 
        较为常见的一个应用是我们能够分析网页中是否有需要填写的Fo 
    rms,如果这个网址的Forms以前已经填写过而且数据已经保存下来的 
    话,就可以把数据自动放到和该URL下的Forms的相关的位置中去。另 
    外,可以总结网页上需要填写的Form的数据项,先对这些数据项进行赋 
    值,以后碰到有相同的数据项的时候就自动把赋值的内容填写进去。 
    实际上For m是对象,Form中包含的元素,比如INPUT、OPTION、SELECT 
    等类型的输入元素都是对象。