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

c++ - 通过 IWebBrowser2 接口检测是否启用了 cookie

是否可以通过IWebBrowser2 接口或其他WebBrowser Control C/C++ 接口检测 Internet Explorer 中是否启用了 cookie ?我看不到任何明显的方法,但想知道是否有一种微妙的方法。

0 投票
1 回答
1145 浏览

internet-explorer - 使用 IWebBrowser2 时禁用“Internet Explorer 当前不是您的默认浏览器”警告

我有一个启动 IWebBrowser2 窗口的 MFC 应用程序。在 Internet Explorer 不是其默认浏览器的用户计算机上,他们会收到以下警告消息

有没有办法在我启动 IWebBrowser2 窗口之前禁用此检查?

0 投票
2 回答
2072 浏览

bho - 如何通过 BHO (C#) 拍摄 IE 网页的快照

我正在尝试在 C# 中构建一个 IE BHO,以获取 IE 浏览器中加载的网页的快照。这是我正在尝试做的事情:

此外,我 p/invoke 以下 COM 方法:

现在当我拍摄快照时:

我打电话 CaptureWebScreenImage((IHTMLDocument2) webBrowser.document);

公共静态图像捕获WebScreenImage(IHTMLDocument2 myDoc){

}

我没有得到网页的图像。相反,我得到的是黑色背景的图像。我不确定这是否是正确的做法,但我在网上发现 IViewObject::Draw 方法用于在 IE 中获取网页的图像。

我之前使用 Native PrintWindow() 方法进行图像捕获,如以下代码项目页面中所述 - http://www.codeproject.com/KB/graphics/IECapture.aspx

但是图像大小是巨大的!我试图看看是否可以通过使用其他技术来减小尺寸。如果有人能指出我上面代码中的错误(我相信会有很多),那就太好了。

谢谢,卡皮尔

0 投票
2 回答
3065 浏览

internet-explorer - 在 IE 中挂钩 http/https 协议会导致 GET 请求是顺序的

我正在使用PassthruAPP方法连接到 IE 发出的 HTTP/HTTPS 请求。

它在大多数情况下运行良好,但是我注意到了一个问题。一次只有一个下载线程处于活动状态,通常 IE 使用两个下载线程。我可以看到创建了两个 IInternetProtocol 对象,但 IE 一次只使用一个。

这发生在 IE7 上,我还没有尝试过其他版本。

问题似乎是 IE 在IInternetSession::RegisterNameSpace调用其任何默认处理程序时会退回到一次下载一个项目。即使我正在注册HTTPS处理程序,下面的代码也会导致HTTP下载是连续的。注册 'file://' 会导致同样的问题。

页面上的前几项总是会发生这种情况,但似乎在发布文档完成后,可能会再次发生并发下载。例如,在页面完成加载后执行的 Javascript 代码可以同时加载图像。

0 投票
1 回答
1671 浏览

encoding - IWebBrowser:从流中加载 html 时如何指定编码?

使用Microsoft 提供的示例代码中的概念,使用 Web 浏览器的IPersistStreamInit接口将 HTML 内容从IStream加载到IWebBrowser :

伪代码:

如何在 IStream 中指定 html 的编码?IStream 将包含一系列字节,但问题是这些字节代表什么?例如,它们可以包含以下字节:

  • 每个字节代表当前 Windows 代码页中的一个字符(例如 1252)
  • 每个字节可以代表 ISO-8859-1 字符集中的一个字符
  • 字节可以表示 UTF-8 编码的字符
  • 每 2 个字节可以代表一个字符,使用 UTF-16 编码

在我的特殊情况下,我为 IWebBrowser 提供了一个包含一系列双字节字符(UTF-16)的 IStream,但浏览器(错误地)认为 UTF-8 编码有效。这会导致乱码。

解决方法

虽然问题询问如何指定编码,但在我的特定情况下,仅使用 UTF-16 编码,有一个简单的解决方法。添加 0xFEFF 字节顺序标记 (BOM) 表示文本是 UTF-16 unicode。即然后使用正确的编码并正确显示文本。

当然,如果文本被编码,那将不起作用,例如:

  • UCS-2
  • UCS-4
  • ISO-10646-UCS-2
  • UNICODE-1-1-UTF-8
  • UNICODE-2-0-UTF-16
  • UNICODE-2-0-UTF-8
  • 美国ASCII
  • ISO-8859-1
  • ISO-8859-2
  • ISO-8859-3
  • ISO-8859-4
  • ISO-8859-5
  • ISO-8859-6
  • ISO-8859-7
  • ISO-8859-8
  • ISO-8859-9
  • WINDOWS-1250
  • WINDOWS-1251
  • WINDOWS-1252
  • WINDOWS-1253
  • WINDOWS-1254
  • WINDOWS-1255
  • WINDOWS-1256
  • WINDOWS-1257
  • WINDOWS-1258
0 投票
1 回答
1408 浏览

c# - 使用 window.open 和 WebBrowser 控件调整 Javascript 大小

我正在使用 WPF WebBrowser 控件并使用以下代码处理 NewWindow3 事件:

使用 window.open 导航时如何处理 javascript 大小调整,如下所示:

无论如何在 NewWindow3 事件处理程序中获取调用者请求的高度和宽度?

0 投票
2 回答
2382 浏览

winapi - IWebBrowser2 控件中的 Tab 键支持

我有一个使用直接 C++ 的嵌入式 IWebBrowser2 控件(有窗口,而不是无窗口),当有人按 Tab 键在浏览器中的字段之间切换时,它会将焦点从 Web 浏览器中跳出来。

关于我需要实施什么或我可能搞砸的任何想法?

谢谢!

0 投票
1 回答
330 浏览

winapi - IWebBrowser2 控件的清单或主题/样式?

IWebBrowser2 控件具有正方形的密码编辑框。这发生在很多年前,如果你在一台 XP 机器上,并且你有一个没有清单文件的密码编辑字段,你会得到正方形(没有找到他们用那种字体放在那里的 * 字符)。我的应用程序有一个清单文件。但是我不知道如何给出清单或设置所创建控件的主题或样式。有任何想法吗?

谢谢!

0 投票
0 回答
887 浏览

mfc - Navigate2 方法返回 S_OK 后卡在 READYSTATE_LOADING 的 READYSTATE

我正在开发一个 MFC 文档视图架构应用程序,它具有多个文档和视图以及一个选项卡式窗口界面。

我的任务是在按下其他选项卡中的 OK 按钮时自动切换到另一个选项卡。单击另一个选项卡时,它使用 IWebBrowser2 上的 C++ 包装器导航到特定网页。

当通过单击选项卡手动完成此操作时,一切都很好,并且视图中的网页成功加载。

在我第一次尝试这样做时,选项卡成功切换以响应对

但是,通过在错误的位置发送此 Windows 消息,应用程序将在控制返回后崩溃,因为事件链导致发送消息的(无模式)对话框 (*) 不再存在。

然后我找到了拨打电话的正确位置,但现在当另一个选项卡被激活时,它不再显示应有的网页。

为了调试这个问题,我添加了代码来检查 READYSTATE 在它工作的情况和它不工作的情况下。当页面加载失败时(尽管调用 Navigate2 返回 S_OK),READYSTATE 只是停留在 READYSTATE_LOADING。

不幸的是,与我部分工作时相比,现在我要进行许多编辑。

我已将 TRACE 语句添加到最明显的事件中,例如 OnSetFocus、CView::OnActivateView,但尽管行为不同,但所有跟踪都以相同的顺序出现

* 托管在视图中

0 投票
1 回答
636 浏览

c++ - 启动启用特定 BHO 的 IE

我有一个 IE BHO 插件,我只想在用户从我的程序启动 IE 时启用它(程序使用 IE 启动 IE CreateProcess())。

我不希望在用户从我的程序外部启动 IE 时启用此 BHO,因为这意味着 BHO 中的任何问题都可能会破坏用户的正常浏览体验。

最好的方法是什么?

一种方法是注册 BHO,启动 IE,然后快速注销 BHO。不过,这似乎有点混乱,因为启动 IE 的程序崩溃可能会导致 BHO 保持注册状态。