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; 검색할 개체를 포함하는 파일의 전체 경로 및 이름입니다. 생략 Class 된 경우 PathName 필수입니다.

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 throw합니다. 다음으로, 예제 코드는 Excel과 지정된 워크시트가 포함된 창을 모두 표시합니다.

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

' 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 파일과 연결된 애플리케이션이 시작되고 지정된 파일의 개체가 활성화됩니다.

기본 사례

길이가 0인 문자열("") GetObject 인 경우 PathName 지정된 클래스 형식의 새 개체 인스턴스를 반환합니다. 인수를 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")

메모

GetObject 현재 개체 인스턴스가 있거나 파일이 로드된 개체를 만들려는 경우 함수를 사용합니다. 현재 인스턴스가 없고 로드된 파일로 개체를 시작하지 않으려면 함수를 CreateObject 사용합니다.

개체가 자신을 ActiveX 단일 인스턴스 개체로 등록한 경우 호출 횟수 CreateObject 에 관계없이 개체의 인스턴스가 하나만 만들어집니다. 단일 인스턴스 개체 GetObject 를 사용하면 길이가 0인 문자열("") 구문을 사용하여 호출할 때 항상 동일한 인스턴스를 반환하고 인수를 생략하면 PathName 오류가 발생합니다. GetObject 사용하여 Visual Basic 사용하여 만든 클래스에 대한 참조를 가져올 수 없습니다.

Important

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

적용 대상

추가 정보