Marshal.GetActiveObject(String) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ROT(실행 개체 테이블)에서 지정된 개체의 실행 중인 인스턴스를 가져옵니다.
public:
static System::Object ^ GetActiveObject(System::String ^ progID);
public static object GetActiveObject (string progID);
[System.Security.SecurityCritical]
public static object GetActiveObject (string progID);
static member GetActiveObject : string -> obj
[<System.Security.SecurityCritical>]
static member GetActiveObject : string -> obj
Public Shared Function GetActiveObject (progID As String) As Object
매개 변수
- progID
- String
요청된 개체의 ProgID(프로그래밍 식별자)입니다.
반환
요청된 개체입니다. 그렇지 않으면 null
입니다. 이 개체를 지원되는 COM 인터페이스로 캐스팅할 수 있습니다.
- 특성
예외
개체를 찾을 수 없습니다.
예제
다음 예제는 Microsoft Word의 실행 중인 인스턴스로 구성된 컴퓨터에서 실행되었습니다. 실행 중인 Microsoft Excel 인스턴스가 없습니다.
이 예제에서는 두 번 호출합니다 GetActiveObject . 첫 번째 호출은 Microsoft Word 인스턴스(개체의 인스턴스)에 대한 참조를 Word.Application
검색하려고 시도합니다. 두 번째 호출은 Microsoft Excel 인스턴스(개체 인스턴스)에 대한 참조를 Excel.Application
검색하려고 시도합니다.
코드는 Microsoft Word 인스턴스에 대한 참조를 성공적으로 검색합니다. 그러나 Microsoft Excel이 실행되고 있지 않으므로 두 번째 개체를 검색하려고 시도하면 가 COMException발생합니다.
using System;
using System.Runtime.InteropServices;
class MainFunction
{
static void Main()
{
Console.WriteLine("\nSample: C# System.Runtime.InteropServices.Marshal.GetActiveObject.cs\n");
GetObj(1, "Word.Application");
GetObj(2, "Excel.Application");
}
static void GetObj(int i, String progID)
{
Object obj = null;
Console.WriteLine("\n" +i+") Object obj = GetActiveObject(\"" + progID + "\")");
try
{ obj = Marshal.GetActiveObject(progID); }
catch (Exception e)
{
Write2Console("\n Failure: obj did not get initialized\n" +
" Exception = " +e.ToString().Substring(0,43), 0);
}
if (obj != null)
{ Write2Console("\n Success: obj = " + obj.ToString(), 1 ); }
}
static void Write2Console(String s, int color)
{
Console.ForegroundColor = color == 1? ConsoleColor.Green : ConsoleColor.Red;
Console.WriteLine(s);
Console.ForegroundColor = ConsoleColor.Gray;
}
}
/*
Expected Output:
Sample: C# System.Runtime.InteropServices.Marshal.GetActiveObject.cs
1) Object obj = GetActiveObject("Word.Application")
Success: obj = System.__ComObject
2) Object obj = GetActiveObject("Excel.Application")
Failure: obj did not get initialized
Exception = System.Runtime.InteropServices.COMException
*/
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Console.WriteLine(vbcrlf + "Sample: VB System.Runtime.InteropServices.Marshal.GetActiveObject.vb" + vbcrlf)
GetObj(1, "Word.Application")
GetObj(2, "Excel.Application")
End Sub
Sub GetObj(ByVal i As Integer, ByVal progID As [String])
Dim obj As [Object] = Nothing
Console.WriteLine((vbLf & i & ") Object obj = GetActiveObject(""") + progID & """)")
Try
obj = Marshal.GetActiveObject(progID)
Catch e As Exception
Write2Console((vbLf & " Failure: obj did not get initialized" & vbLf & " Exception = ") + e.ToString().Substring(0, 43), 0)
End Try
If obj IsNot Nothing Then
Write2Console(vbLf & " Success: obj = " & obj.ToString(), 1)
End If
End Sub
Sub Write2Console(ByVal s As [String], ByVal color As Integer)
Console.ForegroundColor = If(color = 1, ConsoleColor.Green, ConsoleColor.Red)
Console.WriteLine(s)
Console.ForegroundColor = ConsoleColor.Gray
End Sub
End Module
'Expected Output:
'
'Sample: VB System.Runtime.InteropServices.Marshal.GetActiveObject.vb
'
'1) Object obj = GetActiveObject("Word.Application")
'
' Success: obj = System.__ComObject
'
'2) Object obj = GetActiveObject("Excel.Application")
'
' Failure: obj did not get initialized
' Exception = System.Runtime.InteropServices.COMException
'
설명
이 API에 대한 자세한 내용은 Marshal.GetActiveObject에 대한 추가 API 설명을 참조하세요.
적용 대상
.NET