Функция GetObject (Visual Basic)

Обновлен: Ноябрь 2007

Возвращает ссылку на объект, предоставленный компонентом COM.

Public Function GetObject( _
    Optional ByVal PathName As String = Nothing, _
    Optional ByVal [Class] As String = Nothing _
) As Object

Параметры

Параметр

Описание

PathName

Необязательный. String. Полный путь и имя файла, в котором содержится извлекаемый объект. Если параметр PathName опущен или является строкой нулевой длины (""), то требуется Class.

Class

Требуется, если PathName не предоставлен. String. Строка, представляющая класс объекта. Аргумент Class имеет следующие синтаксис и составляющие:

appname.objecttype

ПараметрОписание
appname Обязательный. String. Имя приложения, предоставляющего объект.
objecttype Обязательный. String. Тип или класс создаваемого объекта.

Исключения

Тип исключения

Номер ошибки

Условие

Exception

429

Объект указанного класса не существует.

FileNotFoundException

432

Объект с указанным путем и именем файла не существует.

См. столбец "Номер ошибки", если выполняется обновление приложений Visual Basic 6.0, в которых используется неструктурированная обработка ошибок. (Можно сравнить номер ошибки с Свойство Number (объект Err).) Однако по возможности следует заменять такую систему управления ошибками на Обзор структурной обработки исключений в Visual Basic.

Заметки

Функция GetObject используется для загрузки экземпляра компонента COM из файла. Это показано в приведенном ниже примере.

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

При выполнении этого кода запускается приложение, связанное с заданным путем PathName, и активируется объект в указанном файле.

Стандартные ситуации

Если PathName является строкой нулевой длины (""), функция GetObject возвращает новый экземпляр объекта заданного типа. Если аргумент PathName пропущен, функция GetObject возвращает текущий активный объект типа класса, указанный в Class. Если объекты заданного типа не существуют, возникает ошибка.

Доступ к вложенным объектам

Некоторые приложения позволяют активировать связанные с файлами вложенные объекты. Для этого добавьте в конец имени файла восклицательный знак (!), а после него введите строку, определяющую часть файла, которую следует активировать Сведения о создании такой строки см.в документации по приложению, в котором создается объект.

Например, в графическом редакторе могут создаваться и сохраняться в файл рисунки, состоящие из нескольких слоев. Для активации слоя в рисунке с именем schema.cad можно использовать следующий код.

layerObject = GetObject("C:\CAD\schema.cad!Layer3")

Указание класса

Если не указать Class для объекта, система Automation запускает приложение и активирует объект, руководствуясь указанным именем файла. Однако некоторые файлы могут поддерживать несколько классов объектов. Так, рисунок может поддерживать три разных типа объектов: объект Application, объект Drawing и объект Toolbar, и все они являются частями одного файла. Для того чтобы указать, какой из объектов, содержащихся в файле, следует активировать, используется необязательный аргумент Class. Это показано в приведенном ниже примере.

Dim drawObj As Object
drawObj = GetObject("C:\Drawings\sample.drw", "Figment.Drawing")

В предыдущем примере Figment — имя графического приложения, а Drawing является одним из типов объектов, которые он поддерживает.

Использование объекта

После того как объект активирован, можно ссылаться на него в коде, используя объявленную объектную переменную. В предыдущем примере доступ к свойствам и методам нового объекта производится через объектную переменную drawObj. Это показано в приведенном ниже примере.

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
e9waz863.alert_note(ru-ru,VS.90).gifПримечание.

Используйте функцию GetObject при наличии текущего экземпляра объекта или для создания объекта с загруженным файлом. Если текущий экземпляр объекта не существует и не предполагается создавать объект при загруженном файле, следует использовать функцию Функция CreateObject (Visual Basic).

Если объект зарегистрировался как объект ActiveX с единственным экземпляром, то вне зависимости от числа запусков функции CreateObject создается только один экземпляр объекта. Для объекта с единственным экземпляром функция GetObject всегда возвращает один и тот же экземпляр объекта, когда вызывается со строкой нулевой длины ("") в качестве аргумента, а при вызове функции без аргумента PathName выводится сообщение об ошибке. Функцию GetObject нельзя использовать для получения ссылки на класс, созданный средствами Visual Basic.

e9waz863.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Функция GetObject требует разрешения неуправляемого кода, что может повлиять на выполнение в ситуациях частичного доверия. Дополнительные сведения см. в разделах SecurityPermission и Разрешения для доступа к коду.

При завершении использования объекта задайте всем ссылкам на объект значение Nothing. Это позволяет среде выполнения удалить COM-компонент.

Пример

В следующем примере функция GetObject используется для определения, запущено ли приложение Excel.

' Test to see if a copy of Excel is already running.
Private Sub testExcelRunning()
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    Dim excelObj As Object = GetObject(, "Excel.Application")
    If Err.Number = 0 Then
        MsgBox("Excel is running")
    Else
        MsgBox("Excel is not running")
    End If
    Err.Clear()
    excelObj = Nothing
End Sub

В следующем примере функция GetObject используется для получения ссылки на определенный лист Microsoft Excel (excelObj). Вызов GetObject возвращает ссылку на лист, представленный указанным файлом test.xls. Далее в примере идет код, с помощью которого отображается приложение Excel и окно, содержащее указанный лист.

В данном примере требуется Option Strict Off, так как используется позднее связывание, где объекты назначаются переменным типа Object. При добавлении в проект ссылку на библиотеку типов Excel можно указать Option Strict On и объявить объекты определенных типов. Для этого в меню Проект Visual Studio откройте диалоговое окно Добавить ссылку и на вкладке COM выберите библиотеку типов Excel.

' Add Option Strict Off to the top of your program.
Option Strict Off
Private Sub getExcel()
    Dim fileName As String = "c:\vb\test.xls"

    If Not My.Computer.FileSystem.FileExists(fileName) Then
        MsgBox(fileName & " does not exist")
        Exit Sub
    End If

    ' Set the object variable to refer to the file you want to use.
    Dim excelObj As Object = GetObject(fileName)
    ' Show Excel through its Application property. 
    excelObj.Application.Visible = True
    ' Show the window containing the file.
    Dim winCount As Integer = excelObj.Parent.Windows.Count()
    excelObj.Parent.Windows(winCount).Visible = True

    ' Insert additional code to manipulate the test.xls file here.
    ' ...

    excelObj = Nothing
End Sub

Примечание для разработчиков приложений для смарт-устройств

Данная функция не поддерживается.

Требования

Пространство имен:Microsoft.VisualBasic

**Модуль:**Interaction

**Сборка:**Visual Basic (библиотека времени выполнения, в Microsoft.VisualBasic.dll)

См. также

Ссылки

Функция CreateObject (Visual Basic)

Оператор Declare

Оператор Option Strict

Exception

FileNotFoundException