首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Shell.Application“与"InternetExplorer.Application”的Shell.Application函数

"Shell.Application“与"InternetExplorer.Application”的Shell.Application函数
EN

Stack Overflow用户
提问于 2015-05-31 05:26:10
回答 1查看 16.7K关注 0票数 1

在对这篇文章的回答中,已打开IE窗口的VBA宏 CreateObject()被使用了两次,一次与"Shell.Application“连用,另一次与"InternetExplorer.Application”连用。

第一次用于引用已经打开或已处于活动状态的窗口时。

第二次使用它创建一个新的浏览器窗口。

代码语言:javascript
复制
Sub GetIE_LateBinding()

    Dim IE As Object

    With CreateObject("Shell.Application").Windows

        If .Count > 0 Then
            ' Get IE
            Set IE = .Item(0) ' or .Item(.Count - 1)
        Else
            ' Create IE
            Set IE = CreateObject("InternetExplorer.Application")
            IE.Visible = True
        End If

        IE.Navigate "http://support.microsoft.com/kb/q176792/"

        Set IE = Nothing

    End With

End Sub

我尝试了下面的代码。它每次都会产生一个新的IE窗口,即使已经打开了一个实例。

代码语言:javascript
复制
Public Sub Trial()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
End Sub

我可以理解"InternetExplorer.Application“的行为--每次创建新的IE应用程序实例时,都会创建新的IE应用程序实例,从而创建新的窗口。但是"Shell.Application“似乎可以获取已经打开的应用程序实例,因此,我们可以浏览已经打开的IE窗口。看上去有点混乱。我遗漏了什么?

注意:我猜与class_initialize()有关的东西是"Shell.Application“。

EN

回答 1

Stack Overflow用户

发布于 2015-05-31 12:39:51

IE和Explorer以前是同一个程序,这就是为什么Shell.Application列出打开is的原因。它之所以这样做,是因为它们过去都是资源管理器窗口。你很幸运这能满足你的需要。

CreateObject用于创建一个新对象。

GetObject(filename)连接到打开的文件,如果不打开,则打开它。

代码语言:javascript
复制
Set xlBook = GetObject("C:\Users\David Candy\Documents\Super.xls")
msgbox xlbook.name

GetObject("","shell.application")连接到一个现有的对象,如果它没有运行,它就会失败。

代码语言:javascript
复制
Set GetExcelApp = GetObject("", "Excel.Application")
Msgbox GetExcelApp

不要太执着于物体。许多对象只是像Shell.Application这样的函数库。您创建了一个新的函数库对象

来自COM的帮助。 **组件自动化**将Visual映射到自动化 Visual提供了对自动化的完全支持。下表列出了Visual语句如何转换为OLE API。 Visual Basic语句OLE API

代码语言:javascript
复制
CreateObject (ProgID)

CLSIDFromProgID CoCreateInstance QueryInterface获取IDispatch接口。

代码语言:javascript
复制
GetObject (filename, ProgID)

CLSIDFromProgID CoCreateInstance QueryInterface用于IPersistFile接口。在IPersistFile接口上加载。QueryInterface以获得IDispatch接口。

代码语言:javascript
复制
 GetObject (filename)

CreateBindCtx为后续函数创建绑定上下文。MkParseDisplayName为BindMoniker返回一个名字符号句柄。BindMoniker返回指向IDispatch接口的指针。在名字柄上释放。在上下文中发布。

代码语言:javascript
复制
GetObject (ProgID)

CLSIDFromProgID GetActiveObject on类ID. QueryInterface以获取IDispatch接口。

代码语言:javascript
复制
Dim x As New interface

为接口查找CLSID。CoCreateInstance QueryInterface C微软公司。版权所有。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30554161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档