问题标签 [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.
c# - 不能多次使用“应用”或“调用”功能
我正在使用 SHDocVw DLL 从 C# 打开和操作 Internet Explorer 实例。我需要激活几个文本框的 onkeyup 事件。这是我使用的代码:
这适用于对“应用”的第一次调用,但第二次调用会产生错误:“System.MissingMemberException:调用应用时出错。”。如果我使用“调用”而不是“应用”,也会出现此问题。但是,如果我将其中一个事件调用函数从“应用”更改为“调用”,它就会起作用 - 但如果我尝试在我的程序的同一实例中再次调用此代码,它会引发相同的异常。简而言之-除非我重新启动程序,否则我不能多次使用“应用”或“呼叫”。
此问题仅在 Windows XP+IE8 中出现。如果我在 Windows7+IE9 中尝试,我可以根据需要多次使用“应用”/“调用”。
我可以做些什么来让我多次使用“apply”/“call”,或者以任何其他方式调用事件?
c# - 如何单击此 javascript 按钮?
在我试图登录的网页中间,我有以下代码
我想执行 SubmitAction() 代码,它将获取我的凭据并让我登录。使用 .NET 中的 WebBrowser 工作正常,因为我可以使用“invokescript”。我不能用 shdocvw 做到这一点。如何单击或以其他方式使此操作发生,尤其是因为该元素没有 id 或标签?
这是我的功能目前的样子:
c# - IE 8 的 InternetExplorer COM 对象忽略了活动选项卡
这是在 .net 3.5 winform 上运行的 Web 单点登录代码。只要 ie8 只打开一个选项卡,代码对于 ie6 或 ie8 运行良好。问题是,如果用户打开一个新选项卡(选项卡 2,3 等)并导航到网站(组织内部的 Web 表单),将执行以下代码,但即 COM 自动化对象将返回 HTMLDocument对于第一个选项卡(选项卡 1),即使选项卡 2 是活动选项卡。我在任何地方的 InternetExplorer 或 HTMLDocument 类中都找不到任何 IE 选项卡引用。实际上,在 IE COM 自动化文档中几乎没有 IE 标签相关的文档。
vb.net - 使用 vb 表单控制/访问已打开的浏览器
有没有办法让桌面 vb 应用程序控制已经打开的浏览器窗口?例如,让它鼠标单击窗口中的某些坐标或检查窗口是否包含某些元素。
我已经研究过使用 Microsoft Internet Controls(shdocvw) 和 MSHTML(IHTMLDocument2),但我正在努力研究如何访问浏览器窗口的元素(例如 body.innnerHTML)。
vb.net - SHDocVw.InternetExplorer 在 shellWindows 中返回太多对象
即使我只打开一个浏览器窗口(没有选项卡)并且只运行一个 iexplore.exe 进程,以下代码行也会返回几个 InternetExplorer 对象。如何只获取打开的浏览器窗口对象?
For Each ie As SHDocVw.InternetExplorer In shellWindows
vb.net - ShowWindow 不会设置焦点或最大化
下面的代码不会将焦点设置到我需要的 IE 窗口,也不会像预期的那样最大化它。
vb.net - 确定 IE 窗口何时显示来自桌面应用程序的对话框
我正在尝试确定选定的浏览器窗口是否显示对话框。我正在使用 shdocvw.internetexplorer 对象来抓取浏览器并获取浏览器的特定元素。我无法确定是否正在显示对话框。
我也看过使用 System.Windows.Automation 但不知道如何在 VB 中设置树然后查找对话框
.net - 访问 .NET WebBrowser (SHDocVw) 时出现 COMException
以下异常的原因是什么?
System.Runtime.InteropServices.COMException (0x800706BA):RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)
它发生在我进行 COM 调用时,试图在运行 c# 代码的 Windows XP 机器中操作 InternetExplorer。当我尝试读取 .IsBusy 之类的属性时,它会引发。
异常消息:无法转换类型为“System.__ComObject”接口类型“SHDocVw.IWebBrowser2”的 COM 对象。此操作失败,因为 IID 为“{-D30C1661 CDAF-11D0-8A3E-00C04FC9E26E}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)
c# - 在 WebBrowser 的另一个域上的 iFrame 中获取文本的任何解决方法?
您可能首先会认为这是不可能的,因为 XSS 限制。但我正在尝试从托管 a 的应用程序访问此内容WebBrowser
,而不是从站点中的 javascript 代码访问此内容。
我理解不可能也不应该通过非黑客手段从 javascript 访问此内容,因为这将是一个很大的安全问题。但是从托管WebBrowser
. 如果我想强化我的应用程序用户的 Facebook 信息,我可以在其中Navigate("facebook.com")
做任何我想做的事情。这是一个托管一个WebBrowser
,而不是网页的应用程序。
此外,如果您使用 Google Chrome 访问任何包含 iFrame 的网页,该 iFrame 的来源位于另一个域中,然后右键单击其内容并单击“检查元素”,它将向您显示内容。更简单的是,如果您导航到另一个域中包含 iFrame 的任何网页,您将看到其内容。如果您可以在 上看到它WebBrowser
,那么您应该能够以编程方式访问它,因为它必须位于内存中的某个位置。
有什么办法,不是来自 DOM 对象,因为它们似乎基于与 javascript 相同的引擎,因此受到 XSS 限制的限制,而是来自一些更底层的对象,例如MSHTML
or SHDocVw
,来访问此文本?