问题标签 [ihtmldocument2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1986 浏览

c++ - 如何在 C++ 中使用 x XPath 表达式查询 HTML?

我有一个网络浏览器,我使用 DocumentComplete 从 WebBrowser 读取当前文档(作为 IHTMLDocument2)。

在该 html 文档中运行 xpath 查询的最简单方法是什么?我正在寻找易于使用且重量轻的东西。

我正在使用 Visual Studio C++ 2010。

0 投票
2 回答
1965 浏览

c++ - 从事件 DISPID_TITLECHANGE 获取 IWebBrowser2 指针

我正在处理浏览器帮助器对象,我正在尝试访问触发事件的 IWebBrowser2。使用 NavigateComplete2 和其他事件,我可以轻松做到这一点,因为我获得了 Invoke 参数上的指针。

但是我在 msdn 上读到了这篇文章,它说 TitleChange 事件的唯一参数是标题,那么如何从事件 TitleChange 中获取指向 webbrowser 界面的指针?

以下是我如何通过其他活动获得它:

我正在使用 Visual Studio 2010。

0 投票
1 回答
706 浏览

delphi - 为什么在设置 IHTMLInputTextElement 的值时会出现访问冲突?

我收到以下错误:

模块“project1.exe”中地址 0050AA07 的访问冲突。读取地址 00000000。

我正在尝试在 TWebBrowser 中自动填写表格。它只是表单上称为“登录”的字段。

这是什么意思?我该如何解决?

0 投票
1 回答
1096 浏览

c++ - IHTMLEventObj::put_keyCode 在 IE9 RC 中失败

我有一个 3 年前创建的 IE BHO,它使用 IHTMLEventObj::put_keyCode 函数。此功能已按照 IE6、IE7 和 IE8 中的说明工作。但是,当使用 IE9 RC 进行测试时,它不再像记录的那样工作。该函数以相同的方式调用,结果为 S_OK,但输入字段中未显示该键。即使在我的 Invoke() 函数中,也正在 DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS 中进行调用。

我发现有人遇到类似问题:http ://social.msdn.microsoft.com/Forums/is/ieextensiondevelopment/thread/abcbaffd-ed8a-45b8-840b-8ad8d7d10081 ,但是由于某种原因我无法查看问题. 我能够使用谷歌缓存查看它:http ://webcache.googleusercontent.com/search?q=cache:3OkEceoi6jwJ:social.msdn.microsoft.com/Forums/is/ieextensiondevelopment/thread/abcbaffd-ed8a-45b8- 840b-8ad8d7d10081+put_keyCode+IE9&cd=1&hl=pt-BR&ct=clnk&gl=br&source=www.google.com.br

任何帮助将不胜感激,这是一个需要尽快解决的关键问题。

提前致谢。

更新: 这是一些代码,但想强调的是,该代码在 IE6、IE7 和 IE8 中完美运行。在 IE9 中,它返回 S_OK,但密钥没有改变。

更新 2

我们已经提交了 MSDN 案例,他们发现了问题,最后我们收到他们的消息,打算修复它。

0 投票
2 回答
1598 浏览

delphi - GetFormFieldNames 并不总是有效

我也在尝试找出属于哪个表单和元素。我现在从这个网站理解的代码:

http://www.cryer.co.uk/brian/delphi/twebbrowser/read_write_form_elements.htm

包含此代码

似乎在大多数网站上都可以正常工作。但是有一些网站,例如这个:

http://service.mail.com/registration.html#.1258-bluestripe-product1-undef

通过查看该代码并将其与活动 ID 进行比较,我可以找到它的形式。但是它不适用于该网站。出于某种原因,我认为这与 htmldocument3 有关,并且此代码适用于 htmldocument2。但我不确定。

所以我的问题是如何从这个网站中提取一个包含所有元素名称的 tstringlist?希望你能帮忙!

编辑:添加了一些代码

0 投票
1 回答
618 浏览

windows - MHTML 的 IHTMLDocument:从 URL 加载后的字符集不正确

网页从 Internet 加载到无窗口的 IHTMLDocument 中,以供将来调整 DOM。一切都很好,除了 charset 错误:无论 META 部分的网页中宣传的 charset 是什么,IHTMLDocument 的 charset 属性总是在加载文档后立即变为“Windows-1251”。

当我稍后写出修改后的文档时,由于编码不匹配,该文件不可读:文本采用原始编码,而新文档中的 META 字符集标记为“Windows-1251”。

这是我用来加载文档的代码(省略了错误处理和清理)。

为什么编码错误,我该如何使它正确?谢谢。

0 投票
1 回答
849 浏览

c# - 为什么 IHTMLDocument2 不等于 IHTMLDocument2.body.document?

为什么以下 doc2 与 doc22 不同?

0 投票
1 回答
9741 浏览

c# - IHTMLDocument2 does not work everywhere

In a winform application I have WebBrowser control and a PictureBox. I am loading an Image (from webbrowser control after DocumentComplete) to pictureBox1 with the code below

Image is displayed in picturebox1 on my pc, but not on my friend's. On another windows XP it worked well after installing VS2008. So I guess IHTMLDocument2 needs a windows update to work correctly.

Which update is that? Or any other alternative to this code in which i don't have to redownload image from internet?

0 投票
2 回答
993 浏览

c# - 将 onmouseover 事件分配给我的 htmldocument 不起作用

我正在编写一个项目,我正在编写 ac# windows 应用程序,该应用程序希望从正在运行的 Internet Explorer 实例中获取光标下的当前元素。

我可以获得正在运行的 IE 实例的 IHtmlDocument2 的句柄,我想为它分配 onmouseover 事件,如下所示:

而且因为我不希望 IE 吃掉其他事件(一个著名但已解决的问题),我应该创建一个像这样的 DHTMLEventHandler 类:

而我的 BrowserEventHandler 方法是这样的:

仍然是空的(但我想获得innerHtml 光标下的元素),但这个方法仍然是空的,我得到:

FindText.exe 中出现“System.InvalidCastException”类型的第一次机会异常

每当我移动鼠标时。

问题:

  1. 为什么我得到这个异常?
  2. 是否可以在变量中获取 e.srcElement.innerhtml 并在我的 c# 应用程序中使用?

让我知道是否有不清楚和模棱两可的地方。提前感谢您的任何帮助和想法。我非常感谢任何评论和帮助。

更新:

要回答我的第二个问题,似乎可以得到e.srcElement.innerHTMLof ,IHTMLEventObj e但我真的不知道为什么BrowserEventHandler永远不会调用该方法。有什么想法或提示吗?

更新2:

好的,我发现了问题。首先,我更改了项目的一些设置,以获取首先发生异常的行(因为这是第一次机会异常),如下所示:

在 Visual Studio 中:菜单 >> 调试 >> 异常 >> CLR 异常 >> 系统并检查 SystemInvalidCastException 的抛出选项。

我发现问题出在这一行DHTMLEventHandler

根据我最近的搜索,它抛出Invalid Cast Exception了我认为与 s 相关的内容。Thread

我想我应该将 ApartmentState 设置为ApartmentState.STA. 但我不知道怎么做。有任何想法吗?

0 投票
1 回答
628 浏览

save - IPersistStreamInit::Save() 在 IE9 中不起作用?

此代码适用于 IE8 及更早版本。对于 IE9,IPersistStreamInit::Save() 似乎返回 E_NOTIMPL。任何帮助是极大的赞赏!