【问题标题】:C# Add WMP dynamically to form (currently: audio playing, not showing video)C#动态添加WMP到窗体(目前:播放音频,不显示视频)
【发布时间】:2013-11-04 15:05:15
【问题描述】:

我正在尝试动态加载 WindowsMediaPlayer 控件,但无法使其正常工作。

按原样的代码似乎可以播放音频(可能还有视频),但不会在表单上显示视频。表单保持空白,正在播放音频。 (播放 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.");

    }

非常感谢您帮助使其正常工作。

【问题讨论】:

  • 顺便说一句:尝试像这样将其添加到表单中:form.controls.add(videoPlayer);给出参数异常错误。

标签: c# windows-media-player


【解决方案1】:

我找到了解决方案。这里是为将来需要它的任何人准备的。 代码是: 私有静态 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],否则你会得到一个异常。

祝你好运!

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多