Marshal.GetActiveObject(String) メソッド

定義

ランニング オブジェクト テーブル (ROT: Running Object Table) から指定したオブジェクトの実行中のインスタンスを取得します。

C#
public static object GetActiveObject(string progID);
C#
[System.Security.SecurityCritical]
public static object GetActiveObject(string progID);

パラメーター

progID
String

要求されたオブジェクトのプログラム ID (ProgId)。

戻り値

要求されたオブジェクト。それ以外の場合は null。 このオブジェクトは、サポートされる任意の COM インターフェイスにキャストできます。

属性

例外

オブジェクトが見つかりませんでした。

次の例は、Microsoft Word の実行中のインスタンスで構成されたコンピューターで実行されました。 実行中の Microsoft Excel のインスタンスが存在しません。

この例では、 を 2 回呼び出します GetActiveObject 。 最初の呼び出しでは、Microsoft Word のインスタンス (オブジェクトのインスタンス) への参照を Word.Application 取得しようとします。 2 番目の呼び出しでは、Microsoft Excel のインスタンス (オブジェクトのインスタンス) への参照を Excel.Application 取得しようとします。

このコードは、Microsoft Word のインスタンスへの参照を正常に取得します。 ただし、Microsoft Excel が実行されていないため、2 番目のオブジェクトを取得しようとすると、 COMExceptionが発生します。

C#
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
*/

注釈

この API の詳細については、「 Marshal.GetActiveObject の補足 API 解説」を参照してください。

適用対象

製品 バージョン
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1