【问题标题】:Capture Modal Dialog object using MSHTML/IExplorer使用 MSHTML/IExplorer 捕获模态对话框对象
【发布时间】:2011-06-20 20:56:33
【问题描述】:

我正在使用 C#、MSHTML 和 InternetExplorer 对象来运行网页,但我遇到了一个问题。

基本上,我注意到在 IE7 或更早版本中,当调用 window.showModalDialog 时,会触发 NewWindow3 事件。

在 IE8 和 IE9 中,NewWindow3 永远不会被触发。正如 MSDN 所写:“NewWindow3 事件仅在即将创建 Internet Explorer 的新实例时触发。调用 showModalDialog 或 showModelessDialog 不会触发事件,因为它们不是 Internet Explorer 的新实例。它们被实现为 MSHTML 主机窗口,这允许他们呈现和显示 HTML 内容,但不能呈现和显示文档之间的超链接。” (http://msdn.microsoft.com/en-us/library/aa768337(v=VS.85).aspx)

我能够接近捕获被触发的模态对话框的唯一方法 - 但我无法访问实际的模态对象 - 是使用 WindowStateChanged 事件。该事件通常会被调用,但我注意到当 dwFlags == 1 和 dwValidFlagsMask==3 时,这通常是由于模式对话框而停用浏览器时...

现在,我只需要知道如何获取该模态对话框对象。任何帮助将不胜感激

【问题讨论】:

    标签: c# internet-explorer modal-dialog mshtml


    【解决方案1】:

    原来这一切都取决于您的 Windows UAC 设置。出于安全原因,当您的 UAC 设置为中等或更高时,UAC 会阻止访问模式对话框。降低这些设置允许通过 NewWindow 事件完全访问模式对话框

    【讨论】:

    • 几天来一直试图弄清楚如何访问这些模式对话框。这听起来像是一个了不起的发现……但这对我不起作用。我的 UAC 设置一直向下,并且我同时连接到 NewWindow2 和 NewWindow3 .. 并且都没有触发。在您的问题中您提到了 NewWindow3,但在您的回答中您提到了 NewWindow .. 您的意思是 NewWindow3 吗?还是您找到了附加到 NewWindow 的方法?我试图弄清楚如何附加到它,但 InternetExplorer 和 IWebBrowser2 没有公开它.. 只有 NewWindow2 和 NewWindow3。任何帮助将不胜感激
    • 也附加到 NewWindow.. 没有任何反应。我在 Windows 7 64 位和 IE8 32 位。你是在什么操作系统和 IE 版本上进行这项工作的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多