如何获取对嵌入在另一个应用程序中的 Internet Explorer 实例的 COM 引用

Kev*_*Day 6 com internet-explorer dynamics-crm

适用于 Outlook 的 Dynamics 插件通过 Internet Explorer 嵌入窗口显示内容。我试图找到一种方法来获取该嵌入窗口的 SHDocVw.InternetExplorer COM 对象。我们的应用程序是独立运行的(它不是 Outlook 或 IE 加载项),我们根本无法控制嵌入式 IE 窗口的创建。

当我使用:

Dim SWs As SHDocVw.ShellWindows
Set SWs = New SHDocVw.ShellWindows
Run Code Online (Sandbox Code Playgroud)

SWs 集合不包含对 Outlook 中嵌入式浏览器的引用(尽管我确实得到了对常规浏览器窗口的引用)。

使用 Spy++,我看到嵌入式 Outlook 窗口的以下窗口层次结构:

Window "xxxxxx" WindowsForms10.Window.8.app.0.5c39d4_r64_ad2
  - "" Shell Embedding
    - "" Shell DocObject View
      - "" Internet Explorer_Server
Run Code Online (Sandbox Code Playgroud)

层次结构中的最后两个窗口(Shell DocObject View 和 Internet Explorer_Server)与正在运行的 Internet Explorer 实例中的嵌入式查看器完全相同。

似乎必须有某种方法来获得对这些嵌入式浏览器的 COM 引用 - 任何帮助或想法将不胜感激。

i_a*_*orf 5

请参阅知识库文章 249232。您可以使用辅助功能IHTMLDocument2Internet Explorer_Server窗口获取指针。它并不漂亮,如果您在与目标进程不同的完整性级别上运行,它将无法工作。

根据你在做什么,你可能会破坏目标应用程序,所以要小心。并注意编组。