问题标签 [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 回答
1157 浏览

c# - Binding an event to a COM Interface

Background: I'm using the standard WebBrowser control that is part of System.Windows.Forms which is actually a wrapper over the Internet Explorer COM control, in order to use functionality not exposed by the wrapper I'm using the ActiveXInstance property getter and casting it to the underlying COM type (or actually the COM interop class that Visual Studio automatically creates for you when referencing a COM type ~ Interop.ShDocVw.dll).

Now in order to avoid shipping the entire Interop.ShDocVw.dll I'm trying to compile only the salient sections of code for what I want to achieve, so I'm looking at a decompiled Interop.ShDocVw.dll and trying to replicate only those sections of code I need. The odd thing is that the code as decompiled by ILSpy doesn't actually compile, specifically these event accessors fail to compile:

Despite the event accessor being marked as extern the compiler reports "An add or remove accessor must have a body". If I add an empty body them the comiler reports:

SHDocVw.WebBrowserClass.NewWindow2.add' cannot be extern and declare a body

So what is the correct way to attach an event to a COM implementation?

0 投票
1 回答
810 浏览

c# - 在 C#2.0 中使用 SHDocVw.InternetExplorer 时出错

全部,

我在 C# 2.0 中有这样的代码:

它是带有 sp1、IE9 的 64 位 Windows Server 2008 R2 Standard 的控制台 exe。基本上它会启动 IE 并下载文件,然后处理该文件。当我手动运行它时,例如双击或从命令控制台,它工作得很好。但是,当我通过任务计划程序设置计划任务时,它会在上面的第一行引发错误:

由于以下错误,检索具有 CLSID {9BA05972-F6A8-11CF-A442-00A0C90A8F39} 的组件的 COM 类工厂失败:8000401a。

我认为这一定是权限问题,但我不知道如何解决它。有任何想法吗?

谢谢。

0 投票
1 回答
1469 浏览

c# - c# 指定的强制转换在分配 mshtml.HTMLDocument.frames 时无效

我正在开发 IE BHO,在访问 html 文档中的框架时出现此错误

这是代码。

这里有什么问题?

0 投票
1 回答
474 浏览

winapi - 阅读有关直接托管 MSHTML.DLL(不是 WebBrowser)的材料?

任何人都可以建议直接托管MSHTML.DLL/Trident(不是SHDOCVW.DLL/WebBrowser)的良好阅读材料吗?我想将它用于 C++ 中的 GUI 元素,有时是主要元素。我需要 HTML 渲染、带有额外主机提供的 DOM 方法和属性的 JavaScript、事件。

我的印象是,WebBrowser 只是添加了一个额外的层,提供了我不需要的任何东西,除此之外,我必须努力禁用的东西:跨页导航、历史记录、UI、上下文菜单、注册表依赖项、通用 Active Document 托管,下载等

我找到的所有文章都在谈论 WebBrowser 控件,即使在很多情况下都称它为 MSHTML。微软的文档让人很难理解什么是 MSHTML 和什么是 WebBrowser;例如,“其他 MSHTML 接口”列出了 IWebBrowser2,它不是 MSHTML.DLL 的一部分。

0 投票
0 回答
1101 浏览

c# - Internet Explorer 11 中未引发文档完成事件

在 Internet Explorer 11 上遇到了一个非常奇怪的场景。我为 Internet Explorer 编写了一个 C# 自动化程序,该程序在 IE 10 之前运行良好,现在突然从 IE 11 开始,文档完成停止以提高它们 10 次中的 8 次。

以下面的代码为例。

它会第一次显示消息框,然后永远不会显示。

}

任何人都可以帮助我如何做到这一点?

0 投票
1 回答
1700 浏览

c# - 使用 SHDocVw 时区分 IE 窗口和其他窗口

如何区分 IE shell 窗口和非 IE shell 窗口?我有以下代码片段(删除了很​​多或无关的逻辑),它使用 ShellWindows 对象扫描打开的窗口以查看用户正在浏览的 URL,如果他们浏览到特定的 URL,则打算做一些事情:

不过,我只对 Internet Explorer 窗口感兴趣,而不是窗口打开的其他随机窗口(代码甚至让允许您配置任务栏的窗口滑过)。

0 投票
0 回答
1767 浏览

c# - 捕获 shdocvw.InternetExplorer 的 NewWindow3 事件

我想使用 C# 自动化 Internet Explorer。因此,我编写了简单的控制台应用程序,它创建了 InternetExplorer 的新实例,然后注册了一些事件。

以下事件工作正常OnQuitBeforeNavigate2NewWindow2

NewWindow3没有。一切都可以编译并且可以启动程序,但是当您在另一个窗口中打开链接时会引发以下异常:Eine Ausnahme (erste Chance) des Typs "System.ArgumentException" ist in mscorlib.dll aufgetreten.

那么我在那个事件中做错了什么?我已经完全使用了中指定的参数DWebBrowserEvents2_NewWindow3EventHandler

编辑:由于这似乎是库中的一个错误,是否有可能创建自己的 EventHandler 方法/回调的东西?我做了一些研究,发现了这个页面:如何在 IE9 中使用 MSHTML 的 addEventListener 添加事件监听器? 有人使用回调方法创建 COM 类。

=> 如何扩展 InternetExplorer 类以便可以访问 NewWindow3EventHanlder?

0 投票
0 回答
689 浏览

c# - 尝试转换为 SHDocVw.IWebBrowser2 时访问被拒绝

IE 10 + 出现了这个问题(我使用的是 IE 11)。在 IE 9 中,以下代码不会产生错误。

我得到的错误是

MyApp.exe 中 0x76afc41f (KernelBase.dll) 的第一次机会异常:0x80070005:访问被拒绝。

这是直到发生错误的代码片段。

我认为 IE 10 中有某种新的安全功能可能会导致这种情况发生。

还有其他人有什么想法吗?

0 投票
1 回答
1440 浏览

vb6 - VB6:自动化错误远程过程调用失败

在我的 VB6 应用程序中,有时在某些客户 PC 中,我们会收到类似错误

错误来自下面显示的代码

也适用于以下代码

这些错误的原因可能是什么?如何解决?

0 投票
0 回答
281 浏览

wpf - 在 WPF WebBrowser 中加载资源文件的目录

我在 Visual Studio 中有一个作为资源添加的 HTML 文件和图像的目录;这些文件相互链接。

我可以将其中任何一个作为流或字符串加载并将它们加载到 WebBrowser,但如果我这样做,文件之间的超链接会中断,因为该文档不再知道它位于包含其他文件的目录中。

我不想将文件加载为磁盘上的 file:// URL,因为它们还包含 JavaScript;默认情况下,IE 会阻止它们运行活动内容。

如何在 WPF WebBrowser 中加载这些文件?