Marshal.GetActiveObject(String) Metodo

Definizione

Ottiene un'istanza in esecuzione dell'oggetto specificato dalla tabella degli oggetti in esecuzione (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

Parametri

progID
String

Identificatore programmatico (ProgID) dell'oggetto richiesto.

Valori restituiti

Oggetto richiesto; in caso contrario null, . È possibile eseguire il cast di questo oggetto in qualsiasi interfaccia COM supportata.

Attributi

Eccezioni

L'oggetto non è stato trovato.

Esempio

L'esempio seguente è stato eseguito in un computer configurato con un'istanza di Microsoft Word in esecuzione. Nessuna istanza di Microsoft Excel in esecuzione.

L'esempio chiama GetActiveObject due volte. La prima chiamata tenta di recuperare un riferimento a un'istanza di Microsoft Word (un'istanza dell'oggetto Word.Application). La seconda chiamata tenta di recuperare un riferimento a un'istanza di Microsoft Excel (un'istanza di un oggetto Excel.Application).

Il codice recupera un riferimento a un'istanza di Microsoft Word correttamente. Tuttavia, poiché Microsoft Excel non è in esecuzione, il tentativo di recuperare il secondo oggetto genera un 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
'

Commenti

Per altre informazioni su questa API, vedere Osservazioni supplementari sull'API per Marshal.GetActiveObject.

Si applica a