Interaction.GetObject(String, String) Метод

Определение

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

public static object GetObject(string PathName = default, string Class = default);
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object

Параметры

PathName
String

Optional. String. Полный путь к файлу, содержащему объект, который требуется получить. Если PathName опущен, Class требуется.

Class
String

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

appname.objecttype

[1|1] Параметр

[1|2] Описание

[2|1] appname

[2|2] Обязательно. String. Имя приложения, предоставляющего объект.

[3|1] objecttype

[3|2] Обязательно. String. Тип или класс объекта, который требуется создать.

Возвращаемое значение

Ссылка на объект, предоставляемый компонентом COM.

Исключения

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

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

Примеры

В следующем примере функция GetObject используется для получения ссылки на определенный лист Microsoft Excel (excelObj). Он использует свойство Application листа, чтобы сделать Excel видимым, закрывать его и выполнять другие действия. При использовании двух вызовов API процедура detectExcel ищет Excel, а если она запущена, введите ее в таблицу "Запущенный объект". Первый вызов GetObject вызывает ошибку, если Excel еще не запущена, что в этом примере приводит к тому, что флаг excelWasNotRunning будет задан True. Второй вызов для GetObject указания открытого файла. Если Excel еще не запущен, второй вызов запускает его и возвращает ссылку на лист, представленный указанным файлом, test.xls. Файл должен существовать в указанном расположении; в противном случае Visual Basic создает FileNotFoundException. Далее пример кода делает видимым и Excel, и окно, содержащее указанный лист.

В этом примере требуется Option Strict Off , так как она использует позднюю привязку, где объекты назначаются переменным типа Object. Можно указать и объявить объекты определенных типов объектов, если добавить ссылку на библиотеку типов Excel из диалогового окна com вкладки Add Reference меню Project>Project< в Visual Studio.

' Add Option Strict Off to the top of your program.
Option Strict Off
' 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
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

При вызове функции getExcel выполняется проверка, чтобы узнать, запущена ли Excel. Если это не так, создается экземпляр.

Important

Для простоты в предыдущем примере предполагается, что любое окно с именем XLMAIN принадлежит экземпляру Microsoft Excel. Если другой объект, возможно, запущенный путем незаконного изменения, создал окно с таким именем, оно получит все сообщения, предназначенные для Excel. В приложении, используемом для рабочей среды, следует включить более строгое тестирование, чтобы убедиться, что XLMAIN действительно принадлежит Excel.

Комментарии

Используйте функцию 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в зависимости от указанного имени файла. Однако некоторые файлы могут поддерживать несколько классов объектов. Например, рисунок может поддерживать три различных типа объектов: 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")

Note

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

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

Important

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

Применяется к

См. также раздел