Activex和ie 浏览器的互动

Posted on 2005-12-30 17:51 Raistlin 阅读(692) 评论(2)  编辑 收藏 引用 所属分类: C++

今天中午看到一个电子签名的软件。一看,惊艳!
activex控件直接读取html元素的值,比如<input type="text"></input>

实在是牛啊!俺一开始以为是用javascript来做的.查看了例子的源代码后发现不是.

那么这个acitvex控件至少应该可以获得ie 浏览器的接口IWebBrowser2,但它是怎么做的呢?

一开始我的思路是:ie浏览器作为一个容器,它是否同时实现了IOleContainer和IWebBrowser2?试验发现不对...经过多方google,找到CSDN中shanhe的专栏http://blog.csdn.net/shanhe/category/15859.aspx?PageNumber=2
找到可行的代码如下:

IOleContainer* pContainer;
HRESULT hr = m_pClientSite->GetContainer(&pContainer);
if (FAILED(hr))
    return hr;

IServiceProvider* pServiceProvider;
hr = pContainer->QueryInterface(IID_IServiceProvider,
                                (void**)&pServiceProvider);
pContainer->Release();
if (FAILED(hr))
    return hr;

IWebBrowser2* pWebBrowser;
hr = pServiceProvider->QueryService(SID_SWebBrowserApp,
                           IID_IWebBrowser2,
                           (void**)&pWebBrowser);
pServiceProvider->Release();
if (FAILED(hr))
    return hr;

可以获取了IWebBrowser2接口,但如何读取html元素的值呢?IWebBrowser2接口似乎没有这个功能?

又是千山万水的google:
vckbase:
http://vckbase.net/document/viewdoc/?id=1446
codeguru:
http://www.codeguru.com/Cpp/COM-Tech/atl/misc/article.php/c3619/

iehtmlelement.jpg 


msdn 2003 :
MSHTML ReferenceHOWTO: Get the WebBrowser Object Model of an HTML Frame
HOWTO: Retrieve the URL of a Web Page from an ActiveX Control

msdn关于MSHTML的参考也够烂,列出一堆接口方法就不管了。究竟结构如何要自己去研究。总之很是不爽。

Feedback

# re: Activex和ie 浏览器的互动  回复  更多评论   

2005-12-31 09:53 by 萌芽的叶子
用黑色用底很有个性哦,不过看的眼睛累。
我有一段时间也在研究电子签名,不过最后还是没有实现,希望和你好好的讨论一下

# re: Activex和ie 浏览器的互动  回复  更多评论   

2005-12-31 10:19 by Raistlin
我已经完全适应黑色的底色了...
电子签名 数字签名 电子签章 我瞎搞胡搞过一阵子,可能连入门都不算。
现在已经有很多电子签章的产品在大赚其钱了...公司也没有自己做的打算。俺就打消了"雄心大志"鸟..
只有注册用户登录后才能发表评论。

posts - 49, comments - 14, trackbacks - 0, articles - 0

Copyright © Raistlin