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. Можно указать
' 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 " Разрешения доступа к коду".