Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Im Gegensatz zu anderen .NET-Sprachen bietet Visual C++ Interop-Funktionen, durch die nicht verwaltete Funktionen, einschließlich COM-Schnittstellen, direkt verwendet werden können. Auf diese Weise können Entwickler Tlbimp.exe und seine Nachteile vermeiden. Weitere Informationen finden Sie unter Verwenden systemeigener .NET-COM-Server.
In diesem Thema wird dargestellt, wie COM-Objekte über verwalteten Code im Type Library Importer-Tool (Tlbimp.exe)-Tool verwendet werden können. Dieses .NET Framework-Tool generiert anhand einer COM-Typbibliothek (oder nur der DLL, die sowohl die COM-Komponente als auch die Typbibliothek enthält) eine verwaltete Interop-Assembly, die von beliebigen .NET-Sprachen verwendet werden kann. Diese Methode wird Visual C++-Programmierern jedoch nicht empfohlen, besonders bei großen oder komplexen COM-Typbibliotheken.
Das folgende Beispiel enthält die Schritte und den erforderlichen Code zur Verwendung der in Quartz.dll definierten COM-Schnittstellen. Die Quartz.dll ist im Windows/System32-Verzeichnis von Windows XP installiert. Diese Schnittstellen umfassen DirectShow-Funktionalität für die Wiedergabe von AVI-Dateien. Um Tlbimp.exe über die Befehlszeile auszuführen, müssen Sie die .NET Framework SDK-Tools dem Systempfad hinzufügen, indem Sie Sdkvars.bat im Verzeichnis C:\Programme\Microsoft.NET\SDK\v2.0\Bin ausführen.
So erzeugen Sie die Interop-Assembly
Führen Sie in einem Eingabeaufforderungsfenster im Verzeichnis C:\Windows\System32 den Befehl tlbimp quartz.dll aus. (Der Name der resultierenden Interop-Assembly basiert auf dem Namen der COM-Typbibliothek. In diesem Fall lautet der Dateiname QuartzTypeLib.dll.)
Verschieben Sie die Interop-Assembly in das Verzeichnis, in dem die Anwendung ausgeführt wird, die sie verwendet.
Beispiel
Der folgende Code definiert eine Konsolenanwendung, bei der die zuvor erzeugte Interop-Assembly zur Anzeige einer AVI-Datei verwendet wird.
Wenn Sie die resultierende EXE-Datei mit dem Namen einer gültigen AVI-Datei ausführen, wird diese in einem Fenster angezeigt.
// AVIPlayer.cpp
// compile with: /clr
#using <QuartzTypeLib.dll>
using namespace QuartzTypeLib;
using namespace System;
void DisplayUsage() {
Console::WriteLine("AVIPlayer: Plays AVI files.");
Console::WriteLine("Usage: AVIPlayer.EXE <filename>");
}
int main() {
array<String^>^ args = Environment::GetCommandLineArgs();
if (args->Length != 2) {
DisplayUsage();
return 0;
}
String^ filename = args[1];
if (filename->Equals("/?")) {
DisplayUsage();
return 0;
}
FilgraphManager^ graphManager = gcnew FilgraphManager();
IMediaControl^ mc = dynamic_cast<IMediaControl^>(graphManager);
mc->RenderFile(filename);
mc->Run();
Console::WriteLine("press any key");
Console::ReadLine();
}