Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
0 von 1 fanden dies hilfreich - Dieses Thema bewerten.

Marshal.GetActiveObject-Methode

Ruft eine ausgeführte Instanz des angegebenen Objekts aus der ROT (Running Object Table) ab.

Namespace:  System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)
public static Object GetActiveObject(
	string progID
)

Parameter

progID
Typ: System.String
Der programmgesteuerte Bezeichner (ProgID) des Objekts, das angefordert wurde.

Rückgabewert

Typ: System.Object
Das Objekt, das angefordert wurde, andernfalls null. Sie können dieses Objekt in eine beliebige unterstützte COM-Schnittstelle umwandeln.
Ausnahme Bedingung
COMException

Das Objekt wurde nicht gefunden.

GetActiveObject macht die GetActiveObject Function-COM-Funktion aus OLEAUT32.DLL verfügbar. Letztere erwartet jedoch eine Klassen-ID (CLSID) statt des Programmbezeichners (ProgID), der von dieser Methode erwartet wird. Zum Abrufen einer derzeit ausgeführten Instanz eines COM-Objekts ohne registrierte ProgID definieren Sie die GetActiveObject Function-COM-Funktion mit einem Plattformaufruf. Eine Beschreibung eines Plattformaufrufs finden Sie unter Verwenden nicht verwalteter DLL-Funktionen.

ProgID und CLSID

Die Schlüssel in der Teilstruktur HKEY_CLASSES_ROOT der Registrierung enthalten verschiedene Typen von Unterschlüsseln. Bei den meisten Unterschlüsseln handelt es sich um ProgIDs, die einer CLSID eine benutzerfreundliche Zeichenfolge zuordnen. Für Anwendungen werden häufig diese lesbaren Zeichenfolgen anstelle numerischer CLSIDs verwendet. Häufig verfügt eine Komponente über eine versionsunabhängige ProgID, die der zuletzt auf dem System installierten Version der Komponente zugeordnet ist.

Anwendungen und Komponenten verwenden ProgIDs hauptsächlich um Abrufen der entsprechenden CLSIDs.

Das folgende Beispiel wurde auf einem Computer ausgeführt, der mit einer ausgeführten Instanz von Microsoft Word konfiguriert wurde. Es wurden keine Instanzen von Microsoft Excel ausgeführt.

Im Beispiel wird GetActiveObject zweimal aufgerufen. Der erste Aufruf versucht, einen Verweis auf eine Instanz von Microsoft Word (eine Instanz des Word.Application-Objekts) abzurufen. Der zweite Aufruf versucht, einen Verweis auf eine Instanz von Microsoft Excel (eine Instanz eines Excel.Application-Objekts) abzurufen.

Im Code wird erfolgreich ein Verweis auf eine Instanz von Microsoft Word abgerufen. Da Microsoft Excel jedoch nicht ausgeführt wird, löst der Versuch, das zweite Objekt abzurufen, einen COMException aus.



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



.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1
  • SecurityCriticalAttribute  

    Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von teilweise vertrauenswürdigem oder transparentem Code nicht verwendet werden.

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ