Marshal.GetActiveObject(String) Método

Definición

Obtiene una instancia en ejecución del objeto especificado de la tabla de objetos de ejecución (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

Parámetros

progID
String

Identificador de programación (ProgID) del objeto que se solicitó.

Devoluciones

Objeto que se solicitó; en caso contrario, null. Puede convertir este objeto en cualquier interfaz COM compatible.

Atributos

Excepciones

No se encontró el objeto.

Ejemplos

En el ejemplo siguiente se ejecutó en un equipo que se configuró con una instancia en ejecución de Microsoft Word. No había instancias de Microsoft Excel en ejecución.

En el ejemplo se llama GetActiveObject dos veces. La primera llamada intenta recuperar una referencia a una instancia de Microsoft Word (una instancia del Word.Application objeto ). La segunda llamada intenta recuperar una referencia a una instancia de Microsoft Excel (una instancia de un Excel.Application objeto).

El código recupera una referencia a una instancia de Microsoft Word correctamente. Sin embargo, dado que Microsoft Excel no se está ejecutando, el intento de recuperar el segundo objeto 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
'

Comentarios

Para obtener más información sobre esta API, consulte Comentarios complementarios de api para Marshal.GetActiveObject.

Se aplica a