Frage

Ich bin mit einem COM-Wrapper mit Windows Media Player zu interagieren.

Das es eine AxHost verwendet irgendwie den Spieler zu wickeln, für mich ist es alles nur Magie unter der Haube ^^

Die AxHost.AttachInterfaces wie folgt aussieht

    protected override void AttachInterfaces() 
    {
        try 
        {   
            //Get the IOleObject for Windows Media Player.
            IOleObject oleObject = this.GetOcx() as IOleObject;

            //Set the Client Site for the WMP control.
            oleObject.SetClientSite(this as IOleClientSite);

            Player = this.GetOcx() as WMPLib.WindowsMediaPlayer; 
...

Alles funktioniert, solange ich Gastgeber dieses AxHost in einem Windows Forms-Steuerelement finden. Aber ich kann nicht die Ereignisse in einem Konstruktor anschließen.

Dies zum Beispiel funktioniert nicht:

    public WMPMediaRating()
    {
        var remote = new WMPRemote.RemotedWindowsMediaPlayer();
        _WMP = remote.Player;

        _WMP.MediaChange += new _WMPOCXEvents_MediaChangeEventHandler(_WMP_MediaChange);
    }

remote.Player ist immer null, und das Programm stürzt mit einem NullReferencesException.

Der Code in AttachInterfaces () ist irgendwie erst nach dem Formular ausgeführt gezogen worden ist, oder nach dem alles andere getan wird.

Ich habe versucht AttachInterfaces () von Hand aufrufen, aber das hat nicht funktioniert entweder, weil GetOcx () gibt nichts.


Wie kann ich meine AxHost vererbte Kontrolle ohne Windows Forms instanziiert, es in einer Konsolenanwendung zum Beispiel zu benutzen?

War es hilfreich?

Lösung

Zu Ihrer Information:. Niemand stoppt, von Ihnen ein ausgeblendetes Fenster in Ihrer Konsole-Anwendung mit

Sie werden nicht in der Lage den Media-Player in einer Nicht-Windows-Anwendung zu hosten - es erfordert Hosting. Wenn Sie etwas Musik spielen wollen, können Sie die Medien Graphs verwenden, um ein Diagramm zu erstellen, die (mal gespielt) Ihre Musikdatei macht -. Es wird kein zusätzliches Hosting benötigt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top