问题标签 [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.
c++ - 如何在 C++ 中使用 x XPath 表达式查询 HTML?
我有一个网络浏览器,我使用 DocumentComplete 从 WebBrowser 读取当前文档(作为 IHTMLDocument2)。
在该 html 文档中运行 xpath 查询的最简单方法是什么?我正在寻找易于使用且重量轻的东西。
我正在使用 Visual Studio C++ 2010。
c++ - 从事件 DISPID_TITLECHANGE 获取 IWebBrowser2 指针
我正在处理浏览器帮助器对象,我正在尝试访问触发事件的 IWebBrowser2。使用 NavigateComplete2 和其他事件,我可以轻松做到这一点,因为我获得了 Invoke 参数上的指针。
但是我在 msdn 上读到了这篇文章,它说 TitleChange 事件的唯一参数是标题,那么如何从事件 TitleChange 中获取指向 webbrowser 界面的指针?
以下是我如何通过其他活动获得它:
我正在使用 Visual Studio 2010。
delphi - 为什么在设置 IHTMLInputTextElement 的值时会出现访问冲突?
我收到以下错误:
模块“project1.exe”中地址 0050AA07 的访问冲突。读取地址 00000000。
我正在尝试在 TWebBrowser 中自动填写表格。它只是表单上称为“登录”的字段。
这是什么意思?我该如何解决?
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 案例,他们发现了问题,最后我们收到他们的消息,打算修复它。
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?希望你能帮忙!
编辑:添加了一些代码
windows - MHTML 的 IHTMLDocument:从 URL 加载后的字符集不正确
网页从 Internet 加载到无窗口的 IHTMLDocument 中,以供将来调整 DOM。一切都很好,除了 charset 错误:无论 META 部分的网页中宣传的 charset 是什么,IHTMLDocument 的 charset 属性总是在加载文档后立即变为“Windows-1251”。
当我稍后写出修改后的文档时,由于编码不匹配,该文件不可读:文本采用原始编码,而新文档中的 META 字符集标记为“Windows-1251”。
这是我用来加载文档的代码(省略了错误处理和清理)。
为什么编码错误,我该如何使它正确?谢谢。
c# - 为什么 IHTMLDocument2 不等于 IHTMLDocument2.body.document?
为什么以下 doc2 与 doc22 不同?
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?
c# - 将 onmouseover 事件分配给我的 htmldocument 不起作用
我正在编写一个项目,我正在编写 ac# windows 应用程序,该应用程序希望从正在运行的 Internet Explorer 实例中获取光标下的当前元素。
我可以获得正在运行的 IE 实例的 IHtmlDocument2 的句柄,我想为它分配 onmouseover 事件,如下所示:
而且因为我不希望 IE 吃掉其他事件(一个著名但已解决的问题),我应该创建一个像这样的 DHTMLEventHandler 类:
而我的 BrowserEventHandler 方法是这样的:
仍然是空的(但我想获得innerHtml
光标下的元素),但这个方法仍然是空的,我得到:
FindText.exe 中出现“System.InvalidCastException”类型的第一次机会异常
每当我移动鼠标时。
问题:
- 为什么我得到这个异常?
- 是否可以在变量中获取 e.srcElement.innerhtml 并在我的 c# 应用程序中使用?
让我知道是否有不清楚和模棱两可的地方。提前感谢您的任何帮助和想法。我非常感谢任何评论和帮助。
更新:
要回答我的第二个问题,似乎可以得到e.srcElement.innerHTML
of ,IHTMLEventObj e
但我真的不知道为什么BrowserEventHandler
永远不会调用该方法。有什么想法或提示吗?
更新2:
好的,我发现了问题。首先,我更改了项目的一些设置,以获取首先发生异常的行(因为这是第一次机会异常),如下所示:
在 Visual Studio 中:菜单 >> 调试 >> 异常 >> CLR 异常 >> 系统并检查 SystemInvalidCastException 的抛出选项。
我发现问题出在这一行DHTMLEventHandler
:
根据我最近的搜索,它抛出Invalid Cast Exception
了我认为与 s 相关的内容。Thread
我想我应该将 ApartmentState 设置为ApartmentState.STA
. 但我不知道怎么做。有任何想法吗?
save - IPersistStreamInit::Save() 在 IE9 中不起作用?
此代码适用于 IE8 及更早版本。对于 IE9,IPersistStreamInit::Save() 似乎返回 E_NOTIMPL。任何帮助是极大的赞赏!