프로그래밍 방식으로 Windows 미디어 플레이어 컨트롤 만들기

[이 페이지와 연결된 기능인 Windows 미디어 플레이어 SDK는 레거시 기능입니다. MediaPlayer로 대체되었습니다. MediaPlayer는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows 미디어 플레이어 SDK 대신 MediaPlayer를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

도구 상자에서 양식에 Windows 미디어 플레이어 컨트롤을 추가하면 AxWMPLib.AxWindowsMediaPlayer 클래스의 개체가 만들어집니다. 이 래퍼 클래스는 위치크기와 같은 UI 속성에 대한 액세스를 포함하여 Player에 ActiveX 컨트롤의 모든 기능을 제공합니다.

AxWindowsMediaPlayer에서 노출하는 속성이 필요하지 않거나 애플리케이션에 그래픽 사용자 인터페이스가 없는 경우 프로그래밍 방식으로 플레이어 컨트롤을 만들 수 있습니다. 이 경우 WMPLib.WindowsMediaPlayer 클래스의 개체를 만듭니다.

참고

WindowsMediaPlayer 개체는 ActiveX 컨트롤로 래핑되지 않으므로 System.Windows.Forms.Control에서 상속된 속성이 없습니다. 따라서 Controls 속성의 이름은 AxWindowsMediaPlayer와 같이 CtlControls로 바뀌지 않습니다.

 

프로그래밍 방식으로 Windows 미디어 플레이어 컨트롤을 만들려면 먼저 \Windows\system32 폴더에 있는 wmp.dll 대한 참조를 추가해야 합니다. 이 참조를 추가하면 프로젝트 폴더에 WMPLib.dll 만들어지고 WMPLib에 대한 참조가 솔루션 탐색기 나타납니다.

Form1 클래스의 일부인 다음 예제 코드는 Player 개체를 만들고 파일을 재생하는 방법을 보여줍니다. 재생이 종료되거나 파일을 재생할 수 없는 경우 양식이 닫힙니다.

Dim WithEvents Player As WMPLib.WindowsMediaPlayer

Private Sub PlayFile(ByVal url As String)
    Player = New WMPLib.WindowsMediaPlayer
    Player.URL = url
    Player.controls.play()
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
                       Handles MyBase.Load
    ' TODO  Insert a valid path in the line below.
    PlayFile("c:\media\myaudio.wma")
End Sub

Private Sub Player_MediaError(ByVal pMediaObject As Object) _
                              Handles Player.MediaError
    MessageBox.Show("Cannot play media file.")
    Me.Close()
End Sub

Private Sub Player_PlayStateChange(ByVal NewState As Integer) _
                                   Handles Player.PlayStateChange
    If NewState = WMPLib.WMPPlayState.wmppsStopped Then
        Me.Close()
    End If
End Sub

WMPLib.WindowsMediaPlayer Player;

private void PlayFile(String url)
{
    Player = new WMPLib.WindowsMediaPlayer();
    Player.PlayStateChange += 
        new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
    Player.MediaError += 
        new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
    Player.URL = url;
    Player.controls.play();
}

private void Form1_Load(object sender, System.EventArgs e)
{
    // TODO  Insert a valid path in the line below.
    PlayFile(@"c:\myaudio.wma");
}

private void Player_PlayStateChange(int NewState)
{
    if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
    {
        this.Close();
    }
}

private void Player_MediaError(object pMediaObject)
{
    MessageBox.Show("Cannot play media file.");
    this.Close();
}


.NET Framework 솔루션에 Windows 미디어 플레이어 컨트롤 포함