我正在使用COM Wrapper與Windows Media Player進行交互。如何僅在代碼中創建AxHost [C#]
的是使用AxHost以某種方式包裹的球員,對我來說這引擎蓋^^
的AxHost.AttachInterfaces看起來像這樣
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;
...
下的一切都只是魔術正在爲找到只要我在Windows窗體控件中託管這個AxHost。但我無法在構造函數中掛接事件。
例如,這不起作用:
public WMPMediaRating()
{
var remote = new WMPRemote.RemotedWindowsMediaPlayer();
_WMP = remote.Player;
_WMP.MediaChange += new _WMPOCXEvents_MediaChangeEventHandler(_WMP_MediaChange);
}
remote.Player總是空,程序與NullReferencesException崩潰。
AttachInterfaces()中的代碼以某種方式只在Form被繪製完畢或其他所有事情完成後執行。
我試過用手調用AttachInterfaces(),但是這並不起作用,因爲GetOcx()什麼都不返回。
那麼,如何在沒有Windows窗體的情況下實例化我的AxHost繼承的控件,以便在控制檯應用程序中使用它?
感謝