2013-11-04 39 views
1

我试图动态加载的WindowsMediaPlayer控制(目前音频播放,不显示视频),但我不能让它正常工作。C#添加WMP动态形成:

的代码是,似乎播放音频(也可能是视频),但不显示窗体上的视频。表单保持空白,音频播放。 (播放WVM文件,不能成为编码器问题)我正在导入WMPLib。

WindowsMediaPlayer videoPlayer; 

    public void createContent(Form form) { 
     PlayFile("F:\\Videos\\CantTouchThis.wmv"); 
    } 

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

    private void Player_PlayStateChange(int NewState) { 
     if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped) { 

     } 
    } 

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

    } 

帮助获得这项工作将不胜感激。

+0

顺便说一句:试图将其添加到这样的形式: form.controls.add(录像机);给出一个参数异常错误。 – Serellyn

回答

1

我找到了解决方案。这里是任何需要它的人。 代码是: private static AxWMPLib.AxWindowsMediaPlayer wmPlayer;

public static void AddMediaPlayer(Form form1) { 
     Button b1 = new Button(); 
     b1.Text = "Button"; 
     try { 
      wmPlayer = new AxWMPLib.AxWindowsMediaPlayer(); 

      ((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit(); 
      wmPlayer.Name = "wmPlayer"; 
      wmPlayer.Enabled = true; 
      wmPlayer.Dock = System.Windows.Forms.DockStyle.Fill; 
      form1.Controls.Add(wmPlayer); 
      ((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit(); 

      // After initialization you can customize the Media Player 
      wmPlayer.uiMode = "none"; 
      wmPlayer.URL = @"C:\ProjectSilver\assets\RadarDetectie\general\inlog_confirm.ogv"; 
      wmPlayer.Ctlcontrols.play(); 
     } 
     catch { } 

不要忘记导入库AxWMPLib。 之后,你需要在你的课堂上添加[STAThread],否则你会得到一个异常。

Goodluck!