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

javascript - 覆盖 webbrowser 控件上的 window.location

这似乎是一个奇怪的问题,但是有没有办法覆盖 window.location 而不让浏览器控件导航到它?我遇到的问题是我在控件中注入 html 代码,并且 window.location 是 about:blank - 导致某些 javascript 代码出错。试图让他们认为他们在一个 URL 中,而不是 about:blank

0 投票
1 回答
1370 浏览

c# - 如何获取触发 downloadBegin() 事件的 URL?

我正在尝试创建一个基于 WPF Web 浏览器控件的自定义 Web 浏览器。我已经实现了IWebBrowser2 com接口并实现了Navigating(),NavigatedTo()LoadCompleted()事件的处理程序。但是这些事件回调只为顶级页面触发一次。现在假设一个页面中有一些 java script , css 和 image 文件;浏览器发出单独的 HTTP 请求来下载这些文件。我们想捕获单个 HTTP 请求事件。例如,如果 HTML 页面的结构是

我想捕获 img1.bmp 和 img2.bmp 的单独下载时间。有人可以建议一种方法来实现这一目标吗?

同时,我发现DWebBrowserEvents_Event这些对图像等的请求会触发 downloadbegin() 事件,但我无法获取下载它的 URL,因为处理程序将 void 作为参数。

那么有什么方法可以获取对应的 URL,因为下载完成时会触发下载完成事件。这样我就可以做到这一点。

但是我必须解决上面的图像渲染时间。我被困得很厉害。请帮我....

0 投票
1 回答
139 浏览

browser - 确定 WebBrowser 控件何时开始处理 HTML

有没有办法确定 webbrowser 控件何时开始处理它导航到的 URL 的 HTML?寻找除 onreadystatechange 之外的任何事件(没有明确的状态)?Ontitlechange 对所有用例都不够准确。

0 投票
2 回答
5042 浏览

wpf - 为 WPF WebBrowser 控件指定用户代理

我需要更改 WPF WebBrowser 控件使用的默认用户代理。我查看了控件后面的 IWebBrowser2 对象的属性,并尝试通过在调用“导航”时指定用户代理来指定用户代理,如Suggested Here

这可能吗?

0 投票
1 回答
542 浏览

javascript - 如何访问嵌入式浏览器对象(IWebBrowser2 接口)内的 JavaScript 全局对象(“窗口”)?

我有一个嵌入了 IWebBrowser2 ActiveX 的 HTML 页面(即控件本质上是一个 Internet Explorer 浏览器)。我需要在这个 HTML 页面中编写 JavaScript,这将从 IWebBrowser2 控件中加载的页面中删除任何 window.onresize 处理程序。

IWebBrowser2 通过 IWebBrowser2::Document 公开 DOM,但这等效于 window.document。有什么方法可以访问 window 或 window.onresize?

0 投票
1 回答
3181 浏览

c# - 如何在 IE9 中使用 MSHTML 的 addEventListener 添加事件监听器?

MSDN 文档addEventListener说它接受IDispatch *对象形式的回调函数。在 C#(我正在使用 COM 互操作)中,Visual Studio 将参数类型显示为object.

我寻找了一个IEventListener界面或类似的东西,但没有找到。我应该传递什么?

0 投票
1 回答
202 浏览

.net - 如何在 Web 浏览器控件中获取不完整的请求?

考虑以下情况...

我有一个名为“Page.aspx”的页面包含页面“Page1.aspx”和“Page2.aspx”的链接

加载 page.aspx 后,我在浏览器获得“Page1.aspx”响应之前单击“Page1.aspx”,然后单击“Page2.aspx”,然后加载 page2.aspx。

无论如何我可以获得导航事件是取消page1.aspx吗?或在浏览器中获得任何响应或呈现之前停止请求时引发事件?

谢谢克里希纳

0 投票
1 回答
875 浏览

internet-explorer - IE BHO 浏览器扩展:如何在设置、删除等时获取 cookie

我正在为 Internet Explorer 编写扩展程序,并且想知道如何在会话中以编程方式检测每个域设置、删除、修改了哪些 cookie。

我了解 cookie 是在 WinInet 级别处理的,不一定是 IE BHO、扩展等。

但是是否可以按实例(IWebBrowser2)或每个进程窥探 cookie?

已经研究了一些想法,异步可插拔协议等。到目前为止,我什至正在考虑 IAT 表修补,但我想我之前会要求一个更优雅的解决方案。

谢谢你的帮助。

0 投票
1 回答
2426 浏览

c++ - 使用 IE 控件打印到特定打印机而不更改默认打印机

有没有办法让我将 PrintDlg 结构(或类似的东西)传递给我的 WebBrowser(Internet Explorer / IWebBrowser2)控件,这样它就可以打印到 PrintDlg 中指定的打印机而不弹出打印对话框?我想在不更改默认打印机的情况下执行此操作。IWebBrowser2::ExecWB 提供了一种跳过对话框弹出(OLECMDEXECOPT_DONTPROMPTUSER)的方法,但不是一种指定打印机的方法。

仅更改默认打印机有两个问题:1) 速度很慢,2) Internet Explorer 会缓存其当前打印机。当您打印到默认打印机时,它将缓存该打印机。如果您随后更改默认打印机并告诉它再次打印,IE 将不会使用新的默认打印机,它将使用其缓存的当前打印机。

在 IE 5.5 之后,当前打印机不存储在 Windows 注册表中。

作为替代方案,我研究了 4 种不同的想法,用于从 IE 控件获取图像并自行打印,而不是让控件自行打印:

  1. 使用 IViewObject::Draw。我可以得到图像,但不能像为 IE 打印时那样将其缩放到纸张上:

    矩形矩形;
    rect.left = 0;
    rect.top = 0;
    rect.right = GetDeviceCaps(printerhdc, PHYSICALWIDTH);
    rect.bottom = GetDeviceCaps(printerhdc, PHYSICALHEIGHT);

    StartDoc(printerhdc, &di);
    起始页(printerhdc);
    HRESULT hr = pViewObj->Draw(DVASPECT_DOCPRINT,页面,NULL,pTargetDevice,printerhdc,printerhdc,&rect,NULL,NULL,0);//打印太小
    EndPage(printerhdc);
    EndDoc(printerhdc);

  2. 向 IE 控件发送 WM_PAINT。我在这个方面做得不多,因为我在网上的一个帖子中读到这并没有那么好用。

  3. AxDHTMLED 库。文档很少,我认为这仅适用于 .net

  4. 使用 IHTMLElement、IHTMLElementRender->SetDocumentPrinter、IHTMLElementRender->DrawToDc。微软已取消对 IE9 的支持

您可能有的任何想法将不胜感激!提前致谢!

0 投票
1 回答
4143 浏览

c++ - 嵌入式 Web 控件 (IWebBrowser2),嵌入式 javascript 的 onkeydown 和 onkeyup 未触发

我在我的 C++ 程序中嵌入了一个网页。我遇到的问题是在嵌入页面的 javascript 中我可以捕获 onkeypress,但 onkeydown 和 onkeyup 不会触发。

如果我在非嵌入式 IE(或 Chrome)窗口中查看测试 HTML,那么它可以完美运行。仅在将其嵌入到 IE 控件中时才会出现问题。

如果我为 IE 窗口挂钩 WndProc(或使用 Spy++),WM_KEYDOWN、WM_CHAR 和 WM_KEYUP 消息肯定会进入窗口。

我试图使示例代码尽可能少 - 删除了很多错误检查、清理等。

准备 IE 控件时是否缺少一些设置?或者这只是使用 IE 嵌入式时的方式?我认为如果缺少设置,我将不会得到任何输入。

这是 HTML 测试文件:

以及嵌入文件的 C++ 代码: