问题标签 [iwebbrowser2]

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 回答
1764 浏览

c++ - IWebBrowser2::Navigate2 错误处理

处理错误的正确方法是什么?我有如下代码,处理我在 MSDN 上找到的所有错误代码,但有时我收到错误“未知”。

0 投票
2 回答
2803 浏览

webbrowser-control - 使用嵌入式 WebBrowser 控件时如何绕过 Internet Explorer 增强安全性?

我有一个嵌入的本地 Windows 应用程序WebBrowser,即

  • CLSID_WebBrowser
  • 8856F961-340A-11D0-A96B-00C04FD705A2
  • Shell.Explorer.2

不幸的是,在 Windows 服务器上运行时,Internet Explorer 增强安全模式会干扰WebBrowser控件,导致它根本无法呈现:

在此处输入图像描述

在这种情况下,软件的 UI 被驱动为WebBrowser控件 - 使软件无法使用。

我可以禁用Internet Explorer 增强安全模式,但这不切实际。

如何指示 Internet Explorer 浏览器允许嵌入式浏览器在没有安全对话框的情况下呈现?

注意:我会建议添加about:security_Application.exe受信任区域列表”

在此处输入图像描述

遗憾的是,这将需要 DRP/FRP 验证、ISO 安全评估,并且必须调用安全组来进行更改。此外,还需要创建一个 RFC,这样 KPMG 就不会进行 hissy-fit 下一次审计。我希望有一个“好”的解决方案。

也可以看看

0 投票
0 回答
420 浏览

visual-c++ - 如何停止为 CAxWindow -> IWebBrowser2->Navigate 运行无响应的脚本

我在 ATL exe 中使用CAxWindow::CreateControl(). 然后我查询IWebBrowser2界面并导航到一个 URL。打电话后IWebBrowser2->Navigate,我会检查

  1. IWebBrowser2->get_ReadyState (&result)
  2. IWebBrowser2->get_Busy(&bBusyStatus);

并基于上述价值观,我称之为IWebBrowser2->Stop();

但是,如果 URL 有一些无限循环,则脚本运行不会停止,过了一会儿我收到以下消息: "Stop running this script? A script on this page is causing your web browser to run slowly....."

我想禁止显示此消息框,监视超时,显示我自己的自定义消息并停止运行脚本。但不知道如何实现这一点。对此或任何替代想法的任何帮助将不胜感激。

注意:EvenIWebBrowser2->Quit()无助于中止脚本。

我正在使用 VC++,ATL。

0 投票
1 回答
449 浏览

session - 在打开另一个嵌入式 IWebBrowser2 以进行 NewWindow3 处理时,嵌入式 IWebBrowser2 中的会话到期

我正在开发一个基于多线程 WTL 的应用程序,它可以打开多个浏览器窗口,每个窗口都有自己的嵌入式 IWebBrowser2 实例用于浏览,每个窗口都在一个单独的 UI 线程中。

作为对 NewWindow3 的响应,我打开一个新的浏览器窗口,并返回新窗口IWebBrowser2->get_Application(),它返回一个IDispatchPtr.

虽然弹出窗口确实打开了所需的站点,但打开此弹出窗口的原始窗口中的会话 EXPIRES - 该原始窗口中的任何进一步导航都将返回登录页面!

我认为可能对任何人帮助我很重要的一些要点-

  1. 仅当NewWindow3触发时才会发生这种情况,并且非空bstrUrlContext(包含原始 URL 的第三个参数)
  2. 作为 NewWindow3 处理的一部分,完成以下操作 -
    • 创建新的 IWebBrowser2 嵌入窗口,Create()设置zWindowNamebstrUrlContext参数的值
    • 返回的IDispatch指针是从IWebBrowser2->get_Application()
0 投票
2 回答
894 浏览

winapi - 隐藏 WebBrowser 控件

我有一个 Win32 应用程序,它将 HTML 转换为图像而不显示控件。(我没有太多在 Win32 应用程序中使用 ActiveX 的经验)。

我按照这篇 MSDN 文章创建控件并调用:http Navigate(): //msdn.microsoft.com/en-us/library/aa451946.aspx

当我需要转换图像时,我调用IViewObjec::Draw(). 问题是即使我调用以下函数,控件也始终可见:

当我进入代码时,我发现当我打电话时

控件立即变得可见。但从我从 MSDN 中可以看出,这OLEIVERB_INPLACEACTIVATE意味着

在不显示最终用户需要更改对象行为或外观的工具(例如菜单和工具栏)的情况下激活对象。单击这样的对象会使其与容器协商其用户界面工具的显示。如果容器拒绝,则对象保持活动状态,但不显示其工具。

我有点迷茫,只想掩饰。

0 投票
0 回答
550 浏览

iwebbrowser2 - 加载本地 HTML 页面时不会触发 DocumentComplete 事件

我正在将本地 HTML 文件加载到 IE 中,并希望收到 DocumentComplete 事件。它从未被解雇过。我也尝试过 NavigateComplete 和 ProgressChange 但它们也没有被解雇。这是代码:

如果我正在浏览网页上的网页,我会收到所有事件。那么,为什么他们没有因为本地页面而被解雇呢?

0 投票
1 回答
2202 浏览

c++ - 如何自动化弹出模态 HTML 对话框的 IE webapp?

[为清楚起见再次修订]

我有一个与网站交互的 C++ 程序。该站点是特定于 IE 的,我的程序也是如此。

我以普通方式连接到正在运行的 IE 实例(进程外——参见代码)。一旦获得IWebBrowser2,我就可以毫无问题地获得IHTMLDocument2并与各个IHTMLElement对象进行交互,填写字段并单击按钮。

但是,如果网页有调用window.showModalDialog的 javascript ,我就会陷入困境:我需要与弹出窗口中的 HTML 元素进行交互,就像其他页面一样;但我似乎无法得到它的IWebBrowser2.

弹出窗口总是标题为“网页对话框”,并且是一个Internet Explorer_TridentDlgFrame包含Internet Explorer_Server. Internet Explorer_Server但是当它是一个普通的 IE 实例时,我无法从窗口中获取 IWebBrowser2 。

我可以得到IHTMLDocument2Ptr,但是当我尝试得到时,IWebBrowser2我得到了HRESULTof E_NOINTERFACE

该代码是非常标准的东西,如果它是一个“普通”的 IE 窗口,它就可以正常工作

万一重要,这是VistaIE8。(我强调这一点是因为这两个都在我的代码库中引入了重大更改,这些更改在 XP/IE7 上运行良好。)

再一次,我的目标是获取每个IHTMLElement并与之交互。我无权访问我正在自动化的应用程序的源代码。

我正在考虑盲目地将击键发送到Internet Explorer_Server窗口,但宁愿不这样做。

编辑添加:

有人建议获取子窗口并向它们发送消息,但我很确定这不适用于Internet Explorer_Server; 根据 Spy++,没有任何子窗口。(这不是 IE 特定的。Java 小程序似乎也没有子窗口。)

更新

在评论中,Simon Maurer 说上面的代码对他有用,为了确保没有错别字,他非常慷慨地在pastebin上发布了一个完整的独立应用程序。当我使用他的代码时,它在同一个地方以同样的方式失败,我意识到他认为我想连接到底层页面,而不是弹出窗口。所以我编辑了上面的文字以消除这种歧义。

0 投票
1 回答
1389 浏览

javascript - 从 C++ 中的 JavaScript 函数获取输出

嗨,

我正在一个项目中工作,该项目必须从 C++ 调用一个用 JavaScript 制作的自定义函数。我能够运行该功能

该项目应该只能在Windows上运行(实际上它是一个Windows服务),所以使用接口IWebBrowser2和IHtmlDocument2是可以的

该函数的签名是string function(string). 根据本教程(我正在使用 IWebBrowser2 和 IHtmlDocument2 接口),我能够在 C++ 中运行该函数,但我无法从 C++ 中获取该 JS 函数的输出。

是否有任何方法可以使用这些接口从 C++ 中检索该 JS 函数的输出?(或者可能是其他)

谢谢,

0 投票
1 回答
129 浏览

facebook - IWebExplorer2 导航失败,读取字符串字符时出错

IWebExplorer2::Navigate(..) (or Navigate2)无法导航某些网址。就像在浏览以下网址时一样:*https://www.facebook.com/dialog/oauth/?api_key=<MyKey>&redirect_uri=<MyUri>&state=NONE* , I am getting the error **Error reading characters of string** in **DISPID_NAVIGATEERROR**.

请任何人告诉我我错过了什么?

提前致谢。

0 投票
0 回答
510 浏览

vba - 使用 IWebBrowser2 将小部件放入 PowerPoint 中——自动化错误:未指定的错误

我创建了一个简单的宏来将 Weather.com 中的 HTML 小部件放入 PowerPoint 幻灯片中。

它不是基于事件的,而是在导航到幻灯片时ActionButtons调用子例程。ConnectWidget这很好,但您会注意到,我只能通过首先删除现有的 WebBrowser 形状,然后重新创建它来实现它。

最终,我不得不这样做,因为从wb之后的任何方法调用.Navigate,我都会收到自动化错误/未指定错误或方法不可用错误。例如,wb.Refresh在幻灯片之间来回移动时,如果不先完全删除浏览器形状并重新创建它,我就无法调用。

我可能忽略了一些明显的事情——对可能导致这些错误的原因有什么想法吗?谷歌在解决问题方面没有发现任何真正有用的东西。

这是一个这样的错误。请注意,我没有选择Debug该错误。从单步执行代码中我所能推测的是,在 之后的任何方法调用.Navigate都会导致此错误。

在此处输入图像描述