Поделиться через


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

Определение

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

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object? GetObject (string? PathName = default, string? Class = default);
public static object GetObject (string PathName = default, string Class = default);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObject : string * string -> obj
static member GetObject : string * string -> obj
Public Function GetObject (Optional PathName As String = Nothing, Optional Class As String = Nothing) As Object

Параметры

PathName
String

Необязательный элемент. 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. Можно указать Option Strict On и объявить объекты определенных типов, если добавить ссылку на библиотеку типов Excel на вкладке COM диалогового окна Добавление ссылки в меню Проект в 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. Если это не так, создается экземпляр .

Важно!

Для простоты в предыдущем примере предполагается, что любое окно с именем 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")  

Примечание

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

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

Важно!

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

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

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