问题标签 [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 投票
2 回答
2052 浏览

c# - IHTMLDocument2 - 点击 iframe 内的按钮

我正在为一些非常旧的应用程序创建一个 DCOM 扩展。主应用程序内部有 IE 控件。

使用 C# 我能够获得该 IE 控件的处理程序,如下所示:

这是我的辅助方法:

这部分工作正常,我能够从 temp 获取该 html 页面的内容:

我必须使用 name 访问 iframe AAMain
该 iframe 文档的内容如下所示:

所以基本上我必须访问名为AAMain的iframe内的框架名称Center

myDocument -> iframe(AAMain) -> frame(Centre) -> 然后点击图片

我试图迭代帧,myDocument但我得到无效的强制转换异常。

甚至像这样的代码:

给了我同样的演员例外。

0 投票
1 回答
861 浏览

c# - 从处理程序刷新 Internet Explorer_Server

是否可以强制互联网Explorer_Server刷新它的内容?我所拥有的是外部应用程序中该对象的处理程序(就像在我的类似问题中一样)

我在CodeProject上找到了一个很好的教程,它展示了如何在 MFC 中做到这一点,但我想从 C# 中做到这一点。

我的问题是:如何刷新Explorer_Server托管在外部应用程序中的 Internet。

0 投票
1 回答
5966 浏览

delphi - 如何获取由多个 IHTMLElements 组成的 IHTMLElementCollection obj?

伙计们:我在 object-pascal 编程中遇到了一个关于“如何获取由多个 IHTMLElements 组成的 IHTMLElementCollection obj”的问题,我的代码如下:

0 投票
1 回答
3037 浏览

google-chrome - 如何在 chrome 浏览器中获取 IHtmlDocument2?

在 Internet Explorer 中,我可以使用 IHtmlDocument2 来获取 html 文档。

我使用 spy++ 寻找镀铬框架手柄,我找到了它们。

但它无法在名为 ObjectFromLresult 的函数中捕获结果。

我得到的错误代码是 127。

这是否意味着 chrome 浏览器不支持这种方式来获取其 html 文档?

如果答案是肯定的,还有其他方法可以捕捉到它吗?

多谢。

PS:我尝试使用MSAA树,但它也不起作用。(只能获取标题)

0 投票
1 回答
870 浏览

mfc - 使 CHtmlView 启用 activex 控件下载

我是 Visual C++ 编程的 CHtmlView 的新手。我需要通过 IHTMLDocument2 界面制作一个 Web 浏览器应用程序显示网站,该界面需要从网站下载 activex 控件并自动运行。这是问题所在,我制作的应用程序运行良好,除了网站上的 activex 控件没有运行。我已经检查了 IHTMLDocument2 的界面,并且当 dispid 值等于 DISPID_AMBIENT_DLCONTROL 时,我还覆盖了 OnAmbientProperty 以将标志设置为零,但它仍然没有在使用我自己的网络浏览器应用程序浏览的网站上加载 activex 控件。

谁能告诉我应该找哪个文件?我很困惑如何在我自己的网络浏览器应用程序上设置安全级别以启用 activex。

非常感谢!

0 投票
1 回答
246 浏览

winapi - 如何使用包含 html 文件的缓冲区在我的窗口中托管 html 控件

我正在开发一个可视化 C++ 应用程序(x64)。实际上我想做的是假设我们在窗口资源管理器中有一个 html 文件(我的意思是文件扩展名为“.html”的文件)。当我们单击它时,我们会在预览窗格中获得它的预览(因此我们不需要打开此文件,只需单击文件即可在预览窗格中看到该文件)。

我开发了一种类似类型的应用程序,但在我的情况下,当我单击“html 文件”时,我只是在预览窗格中获取该 html 文件的代码(如果您在记事本中打开该 html 文件,您可以看到该代码)。这预计不会发生,但我想预览那个“html 文件”而不是那个 html 文件的代码。

我想我需要托管一些浏览器控件,它将我在预览窗格中的 html 代码转换为 html 文件的显示(如果我是正确的???)怎么做?

这是我的代码-

任何想法为什么我的窗口中有 html 代码?在代码中做什么才能在我的窗口中预览 html 文件而不是 html 代码?如果对理解我有任何疑问,请告诉我??

0 投票
0 回答
427 浏览

winapi - 如何使用 Visual c++ (x64) 应用程序托管 activex 控件以在窗口上呈现 html

我正在尝试使用 Visual c++(x64) 在我自己的创建窗口中呈现一个 html 文件。我已经完成了所有事情,我只需要一些机制来在我自己的窗口中显示 html 文件。我将 html 文件内容存储在缓冲区中(我很确定这一点,因为我的缓冲区中有相同的 html 代码,我可以在什么时候看到我在记事本中打开该文件,所以我唯一要做的就是找到一种在我的窗口中呈现该 html 文件的方法)

在谷歌上的随机搜索中,我知道我需要托管一个 activex 控件,但我不知道该怎么做。是的,互联网上有一些可用的示例,但它们不适用于 Visual c++(x64 MFC 应用程序) .

我想到的是(1.)我将创建一个对话框使用 -

我对吗 ??

请回答两个问题 (1.) 为什么 m_hwndPreview=00000000000 ?? 因为我使用资源编辑器创建了一个对话框(IDD_HTML_DIALOG)并插入了一个 activex 控件(Microsoft Web 浏览器)并且它成功完成,因为我可以在我的文件 resource.h 中看到(我有#define IDC_EXPLORER1 1046)所以它确定它已经完成。g_hInst2 中可能存在一些问题。我没有正确地理解它。(2.) 我实现目标的方法是否正确?如果我 _hwndPreview 成功完成,那么我假设的代码会起作用吗?我的方法正确吗?

0 投票
1 回答
1035 浏览

internet-explorer - Webbrowser Control - 使用“write”显示文本

我正在使用 IWebBrowser2 接口从运行时创建的 HTML 字符串呈现页面。我编写了一个方法(我们称之为 DisplayHtmlString),它采用 HTML 字符串并呈现它,如本例所示。该方法还首先使用“about:blank”调用 Navigate2,以确保存在文档,并且在调用 write 后它还会调用 close。

第一次调用DisplayHtmlString,页面总是正确渲染,即浏览器根据我传递的字符串显示HTML。问题是后续调用有时无法正常工作,而是呈现空白页面。这可能是什么原因造成的?

我发现当显示空白页时,这是导航到 about:blank 的结果。这是通过导航到本地文件来确定的,然后显示该文件(而应该显示 HTML 字符串,因为随后的写入/关闭)。所以对 Navigate2 的调用有效,而对 write 和 close 的调用有时不起作用。

我认为 IE 内部安全检查是一个可能的原因(跨域检查?),但我的直觉是这不是这里发生的事情。

在我看来,它更有可能是某种同步问题,类似于“IE 在下一次调用 DisplayHtmlString 之前尚未完成渲染”。我的代码最初没有检查浏览器的就绪状态(因为示例没有)。我添加了一个实验性的等待循环,调用 get_readyState 并观察到状态在从方法返回之前从未超过“加载” - 可能是因为渲染是异步的(?)。我还注意到,当对 DisplayHtmlString 的连续调用正常工作时,程序的主消息循环已经运行(让 Windows 有机会处理消息),而在对 DisplayHtmlString 的连续调用失败的情况下,情况并非如此。

所以我很确定我需要在这里提供正确的同步,但是如何呢?我注意到有一个名为 onreadystatechange 的方法,但还没有尝试过,因为我在黑暗中摸索时尝试了许多其他事情。这可能是解决方案,如何正确使用它?或者,我是否应该只处理 DisplayHtmlString 中的消息循环,直到就绪状态变为“完成”?

更新:向 DisplayHtmlString 添加了消息循环处理。在第一次调用(有效)中,就绪状态变为“交互式”,但没有进一步(这似乎不是问题)。在随后的调用中(当它失败时),就绪状态保持在“正在加载”,即使消息循环已被处理。

0 投票
1 回答
597 浏览

delphi - Translating Delphi VarSupports to C++ Builder

I am attempting to translate this code from Delphi to C++ Builder:

Everything went fine until this line:

It reports: E2285 Could not find a match for 'VarSupports(OleVariant,_GUID,_di_IHTMLStyleSheet)'

Everything else translated just fine. Can anyone help me with above line?

My translation so far:

0 投票
1 回答
404 浏览

delphi - IHTMLStyleSheetRulesCollection 用于样式标签(内联样式)

我使用IHTMLDocument2接口来检索IHTMLStyleSheetRulesCollection使用IHTMLDocument2::styleSheets属性。它适用于检索<style>标签内的样式(在文档中<head>)。

我使用上面的方法来查找所有backgroundImage设置的样式(我需要读取值)。

但是,此集合不包括内联样式,<body>例如:

<p style="background:url(image.jpg);"></p>从此<p>标签中提取“image.jpg”。

扫描整个 DOM 树以查找带有背景图像的“样式”属性的元素的方法是什么?欢迎使用 C++ 或 Delphi 中的代码示例。