[VB.NET]使用 AxWindowsMediaPlayer 以全螢幕撥放多媒體相關問題

  • 17267
  • 0
  • 2010-08-03

[VB.NET]使用 AxWindowsMediaPlayer 以全螢幕撥放多媒體相關問題

 

一、問題描述

本文說明使用 AxWindowsMediaPlayer 撰寫播放多媒體程式時,如何以全螢幕播放並且不會產生錯誤如下圖所示之錯誤訊息。

image 

附註 : 關於如何使用 AxWindowsMediaPlayer 撥放多媒體請參考蹂躪的文章 [C#][VB.NET]使用AxWindowsMediaPlayer撥放多媒體

 

二、全螢幕撥放

針對此問題我們做個實驗,在尚未使用 AxWindowsMediaPlayer 元件載入影片並播放多媒體檔案時,透過以下程式碼設定全螢幕撥放


    Private Sub btnFullScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFullScreen.Click
        Me.AxWindowsMediaPlayer1.fullScreen = True
    End Sub

會產生錯誤 [災難性的失敗(發生例外狀況於 HRESULT: 0x8000FFFF (E_UNEXPECTED))]

image

因此,我們可以先判斷 AxWindowsMediaPlayer 狀態是 WMPLib.WMPPlayState.wmppsPlaying 撥放狀態(此狀態表示已經載入多媒體檔案),才能設定全螢幕播放,如下程式碼所示。


    Private Sub btnFullScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFullScreen.Click
        ' 判斷 AxWindowsMediaPlayer 的狀態是 WMPLib.WMPPlayState.wmppsPlaying 撥放狀態
        If Me.AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsPlaying Then
            ' 才能設定全螢幕播放
            Me.AxWindowsMediaPlayer1.fullScreen = True
        End If
    End Sub

 

三、以全螢幕撥放多媒體檔案

假如想要以全螢幕撥放多媒體檔案,如下程式碼會產生錯誤,此錯誤一樣是由於 AxWindowsMediaPlayer 尚未載入多媒體檔案所導致。

image

我們可以在 AxWindowsMediaPlayer_PlayStateChange 事件做判斷,當狀態是 WMPLib.WMPPlayState.wmppsPlaying 撥放狀態(在此狀態表示已經載入多媒體檔案) 設定以全螢幕播放,如下程式碼所示。


    Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
        ' 判斷當狀態是 WMPLib.WMPPlayState.wmppsPlaying 撥放狀態
        If DirectCast(e.newState, WMPLib.WMPPlayState) = WMPLib.WMPPlayState.wmppsPlaying Then
            ' 設定以全螢幕播放
            Me.AxWindowsMediaPlayer1.fullScreen = True
        End If
    End Sub

 

四、相關參考與連結

VB.NET Forms - Full screen WMP