【问题标题】:document.parentWindow "The specified cast is not valid"document.parentWindow "指定的演员表无效"
【发布时间】:2014-11-17 03:48:03
【问题描述】:

在 C# 中,我正在使用 InternetExplorer.Application(进程外 COM 服务器)编写一些自动化代码。

我有一个“dynamic browser”变量持有对此自动化对象的引用并且能够访问

dynamic body = browser.document.body;

browser.document.getElementById("someInput").value = "test";

但我完全无法访问窗口对象,无论是通过

browser.document.parentWindowbrowser.document.defaultView

例如:

browser.document.parentWindow.execScript("alert('hello')");

dynamic window = browser.document.parentWindow;

当我尝试访问像上面这样的窗口对象(或使用 defaultView)时,我总是收到异常消息“错误:指定的转换无效。”这是为什么呢?

在 SA 上还有一个与此类似的问题,但接受的答案是关于线程问题,我认为这是使用 WebBrowser 控件的 inproc 服务器,并且我再次使用的是 out 或 process 服务器,所以我不'不相信任何线程问题适用于我的问题。

技术细节:Windows 7 64 位、Internet Explorer 11、.NET 4.0 控制台应用程序

【问题讨论】:

  • 你查过browser到底是​​哪个对象吗?

标签: c# internet-explorer automation


【解决方案1】:

解决方案是将我的类标记为单线程单元,并在主入口点上使用 [STAThread] 属性。我原以为因为它是一个进程外的 COM 服务器,所以不会有任何同步问题。

【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多