다음을 통해 공유


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이 아직 실행되고 있지 않으면 오류가 발생하며, 이 예제에서는 플래그가 excelWasNotRunningTrue설정됩니다. 에 대한 GetObject 두 번째 호출은 열 파일을 지정합니다. Excel이 아직 실행되고 있지 않으면 두 번째 호출이 시작되고 지정된 파일 test.xls로 표시되는 워크시트에 대한 참조를 반환합니다. 파일이 지정된 위치에 있어야 합니다. 그렇지 않으면 Visual Basic이 을 FileNotFoundExceptionthrow합니다. 다음으로, 예제 코드는 Excel과 지정된 워크시트가 포함된 창을 모두 표시합니다.

이 예제에서는 개체가 Option Strict Off 형식 Object의 변수에 할당되는 지연 바인딩을 사용하기 때문에 이 필요합니다. Visual Studio의 프로젝트 메뉴에 있는 참조 추가 대화 상자의 COM 탭에서 Excel 형식 라이브러리에 대한 참조를 추가하는 경우 특정 개체 형식의 개체를 지정 Option Strict On 하고 선언할 수 있습니다.

' 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 시작 되 고 지정된 된 파일에서 개체 활성화 됩니다.

기본 사례

가 길이가 0인 문자열("") GetObject 이면 PathName 지정된 클래스 형식의 새 개체 인스턴스를 반환합니다. 인수를 PathName 생략 GetObject 하면 에 지정된 Class클래스 형식의 현재 활성 개체를 반환합니다. 지정된 형식의 개체가 없으면 오류가 발생합니다.

하위 개체 액세스

일부 애플리케이션 파일과 연결 된 하위 활성화를 허용 합니다. 이렇게 하려면 파일 이름 끝에 느낌표(!)를 추가하고 활성화하려는 파일의 부분을 식별하는 문자열로 따라가세요. 이 문자열을 만드는 방법에 대 한 자세한 내용은 개체를 만든 애플리케이션에 대 한 설명서를 참조 하세요.

예를 들어 드로잉 애플리케이션에서 파일에 저장 된 그리기에 여러 계층이 있는 될 수 있습니다. 다음 코드를 사용하여 라는 schema.cad드로잉 내에서 레이어를 활성화할 수 있습니다.

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

클래스 지정

개체를 지정 하지 않는 경우 Class, 자동화를 시작 및 개체를 활성화 하려면 애플리케이션 제공한 파일 이름을 기반으로 결정 합니다. 그러나 일부 파일은 둘 이상의 개체 클래스를 지원할 수 있습니다. 예를 들어 드로잉은 개체, Drawing 개체 및 개체 Application 의 세 가지 형식을 지원할 수 있으며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 를 사용하면 길이가 0인 문자열("") 구문을 사용하여 호출될 때 항상 동일한 인스턴스를 반환하며 인수를 생략하면 PathName 오류가 발생합니다. 를 사용하여 GetObject Visual Basic으로 만든 클래스에 대한 참조를 가져올 수 없습니다.

중요

함수에는 GetObject 부분 신뢰 상황에서의 실행에 영향을 줄 수 있는 관리되지 않는 코드 권한이 필요합니다. 자세한 내용은 및 코드 액세스 권한을 참조 SecurityPermission 하세요.

적용 대상

추가 정보