问题标签 [shdocvw]

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

c# - 在 C# 中调用 ShellWindows FindWindowSW 方法

我正在编写一个小型应用程序,它将启动 Internet Explorer 并将打开一个未知列表或 URL,作为新窗口或现有窗口中的新选项卡(取决于该特定站点的设置)。正在启动的网站可以位于任何 Internet 区域。我可以使用 SHDocVw 方法打开新的 Windows 和选项卡。

我试图找出一种方法来跟踪上次打开的 Internet Explorer 引用,以便我可以使用该引用打开选项卡。

我遇到的情况是,由于“松散耦合的 Internet Explorer”(LCIE)和 IE 保护模式,我启动的 IE 实例被关闭而另一个自动启动(IE 虚拟选项卡切换)。这导致我失去了对原始 IE 的引用,当我尝试打开选项卡时它失败了。

我想使用 ShellWindows FindWindowSW 方法来获取特定的窗口(基于 ShellWindows cookie 值),但我无法让它工作。有人能指出我正确的方向吗?

0 投票
0 回答
326 浏览

.net - 如何在 C# 单元测试中等待 SHDocVw InternetExplorerClass.DocumentComplete 事件?

我有一个单元测试代码,需要在 IE 中打开一个页面,并在文档完成后做一些事情。该页面包含重定向并在最后加载 Silverlight(我们又坚持了一年)。

这是代码:

但永远ieEvent.Url存在。另外,如果我在等待循环结束的同时null尝试在某个时候访问,我会得到以下信息:ie.Busy

我究竟做错了什么?

编辑 1

我在这里有一个功能齐全的项目 - https://dev.azure.com/MarkKharitonov0271/_git/BrowserTest

  • 当不带任何参数运行时,它会打开 WebBrowser Windows 窗体控件,导航到 www.ceridian.com 并在ceridianDocumentComplete事件到达时打开一个模式对话框。关闭对话框结束应用程序。
  • 当使用单个命令行参数运行时,比如X,它使用 InternetExplorer COM 对象打开 IE 浏览器,导航到http://www.X.com并在XDocumentComplete事件到达时打开一个模式对话框。关闭对话框结束应用程序。

现在,一切正常:

  1. www.ceridian.com的 WebBrowser 控件-BrowserTest.exe
  2. www.live.com的 IE 窗口-BrowserTest.exe live
  3. www.google.com的 IE 窗口-BrowserTest.exe google

但是,运行BrowserTest.exe ceridian永远不会打开模式对话框。所以,代码一定有问题,但是什么???

0 投票
1 回答
436 浏览

c# - 如何从 SHDocVw 获取 html 标签的子元素

我有下面的 HTML 代码

我正在尝试使用 C# SHDocVw 来查找 div 元素并让孩子们摆脱它。这是C#代码

错误信息:

“object”不包含“length”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“length”

0 投票
1 回答
96 浏览

c# - 控制台应用程序在直接运行时打印,但在由服务运行时不打印

我有一个 C# 控制台应用程序,它通过 API 调用获取 HTML 页面并使用 SHDocVw.InternetExplorer 和 ExecWB 打印文档。当我直接运行应用程序(双击)时,一切都按预期运行。但是,当我从 Windows 服务运行应用程序时,控制台应用程序会挂起,等待打印机响应。

我以管理员身份运行该服务,并且根据我从任务管理器收集的信息,它也以管理员身份运行控制台应用程序。我检查了打印机名称是否有效,并且一切都通过了,因此应用程序似乎可以访问打印机。IE 实例加载文档没有问题,因此有内容要发送到打印机。将 OLECMDEXECOPT_DONTPROMPTUSER 切换为 OLECMDEXECOPT_PROMPTUSER 会在直接运行时给出预期的结果,但在通过服务运行时则没有。

在服务中:

在打印功能中:

直接运行时,打印函数按预期输出 6 行左右的“waiting...”。从服务运行时,程序按预期运行(API 调用和所有),然后等待消息无限重复。

0 投票
1 回答
155 浏览

c# - 如何更改 ShDocVW C# 窗口的左上角图标

首先,我是 Visual Studio 编程的真正新手。话虽如此,我创建了一个弹出 Internet Explorer 窗口的小程序;我现在想用项目的图标替换左上角的 Internet Explorer 图标。

目前,我在 C# 中打开窗口,使用ShDocVw对象:

我要替换的是左上角的 IE 图标(参见包含的图片)。该图标作为资源在我的项目中,并出现在 .exe 上。

IE 标头的屏幕截图

有没有办法在这里更改浏览器图标?

0 投票
1 回答
179 浏览

vb.net - VB .NET SHDocVw.InternetExplorer:Windows 安全弹出窗口

您好,我正在使用 Internet Explorer 无头模式在我的脚本上执行自动化任务,但是我遇到了一个问题,有时通过在某些页面上冲浪时会出现身份验证弹出窗口来登录页面,但不是通过 HTML 弹出窗口而是更多的窗口弹出。

我想控制弹出窗口,所以当它弹出时它将在 TOP 上可见。现在它是非常随机的,它有时会显示在所有程序的顶部,但有时它在后台很远,然后自动化失败,因为用户没有看到弹出窗口。

硬编码用户名和密码不是一种选择。

有谁知道我如何操纵弹出窗口(见附件中的捕获)并最终至少将其放在屏幕顶部?

谢谢!

Windows 安全弹出窗口

0 投票
0 回答
148 浏览

c# - WebBrowser 检测文件下载事件

我想开发 Internet Explorer 插件。我需要检测用户何时下载文件,但我没有找到相关的事件。在此链接中有一个事件列表,但没有用户开始下载文件的事件

代码示例(从链接中获取):

0 投票
1 回答
473 浏览

internet-explorer - 是否需要安装IE才能使用shdocvw.dll?

长期以来,我们一直在使用 shdocvw.dll 在我们的应用程序中显示网页。

如果未安装 Internet Explorer 并安装了 Edge,是否也应该使用 dll?

0 投票
0 回答
121 浏览

c# - SHDocVw InternetExplorer.DocumentComplete 每次都不能正常工作

我正在使用 SHDocVw 启动新的 InternetExplorer 实例并在用户导航到的每个页面中注入一些代码:

注册事件:

问题是它不是每次都被解雇。有时有效,有时无效。此代码以异步方法运行。现在是最好的部分。我试过这样的事情:

不知何故,它每次都有效!但我不喜欢这种无限循环。我的第一种方法可能有什么问题?为什么第二个有效,我怎样才能让它变得更好?

0 投票
0 回答
91 浏览

c# - SHDocVw 仅适用于 Win 10 x64 版本

我有以下用 C# WinForms 编写的代码:

在 x86 平台上运行时出现空引用错误。在 x64 上运行时,一切正常。我想问题出在 Interop.SHDocVw 上。

编辑:在 if 条件下, webBrowser1.Url 部分变为空。所以我试过这样:(它没有给我任何错误,但控制是空的)

如何解决此问题以使其在 x86 平台上也能正常工作?

谢谢