IHTMLDocument2 有什么用?为什么网上找的源码调试报错?

zhugay 2011-05-28 09:17:31
最近使用电子处方软件,因为不能自动填药物剂量,颗数等,想用钩子加模拟按键的方式,没有成功,在网上搜索到关于IHTMLDocument的一些资料,但对此却一无所知,除了下面的不知道是否正确的认识。
1.由类名是"Internet Explorer_Server"的窗口句柄可以得到IHTMLDocument2指针,
2.由IHTMLDocument2指针可以对ie浏览器进行操作,比如我最需要解决的问题:得到页面上的编辑框的文本,然后设置某些编辑框的文本。

网上的源码,通过调试,的确 1. 是对的,用的HWnd2HtmlDocument()函数。全局变量IHTMLDocument2* g_lpHTMLDocument2真的有了一个值。
正高兴时,调试报错。代码
IHTMLElementCollection *pForm;
HRESULT hr = g_lpHTMLDocument2->get_all(&pForm);access violation.我想了下,浏览器和我的程序是不同的进程,内存空间完全不同,报错也应该的。既然别人都在用这个代码,就说明不应该报错,查了msdn,这些函数就是这样用呀。又想到用迅雷下载页面时,它对页面的分析都能实现,应该可行的。

云里雾里。为什么我得到了IHTMLDocument2却不能用,用它又能做哪些事?
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snow_Ice11111 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhugay 的回复:]
我非常关心的问题:获得别的浏览器窗口的IHtmlDocument2可以做些什么事?是不是可以随意读取和改变里面的内容?
[/Quote]
针对IE核心的浏览器,通过IHtmlDocument2指针,你可以获得当前网页的全部源代码,进而对页面中的元素进行读取、改变和提交等操作。我所接触过的项目因为都是针对普通的页面和常见元素,没遇上https这样的页面,所以不能肯定是否可以对任意网页都有效,但对于一般情况下来说,这个指针已经很好、很强大了。
zhugay 2011-05-31
  • 打赏
  • 举报
回复
我非常关心的问题:获得别的浏览器窗口的IHtmlDocument2可以做些什么事?是不是可以随意读取和改变里面的内容?
辰岡墨竹 2011-05-28
  • 打赏
  • 举报
回复
最简单的方法,就是你按照COM的方法创建一个IDispatch对象,CreateDispatch,"InternetExplorer.Application",那个它会直接返回一个对象指针给你,用那个对象可以取得IHtmlDocument2。
如果要获得别的浏览器窗口里的IHtmlDocument2,可以参照一下代码第六种方法
http://hi.baidu.com/rattlesnake_/blog/item/4bc757c451d9f3c839db49d4.html
http://blog.csdn.net/jacky_qiu/archive/2011/01/10/6127121.aspx
窗口句柄可以用FindWindow获得。
redui 2011-05-28
  • 打赏
  • 举报
回复
你得到IHTMLDocument2是正常的,问题在于你的应用对HTML文档来说是不受信任的,所以拒绝让你进入其内部。
MoXiaoRab 2011-05-28
  • 打赏
  • 举报
回复
你是如何获得g_lpHTMLDocument2指针的?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧