You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现AxWindowsMediaPlayer窗体启动时自动全屏播放MP4视频

WinForm启动时自动全屏无声音播放MP4的解决方案

问题分析

你当前的代码里点击按钮能触发全屏,是因为此时视频已经处于wmppsPlaying状态,但窗体启动时直接调用fullScreen = true无效,核心原因是视频加载需要时间,调用play()后不会立刻进入播放状态,此时设置全屏不会生效。另外还需要补充静音逻辑实现无声音播放。

解决步骤及修改代码

以下是调整后的完整代码,关键修改已标注:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AxWMPLib;
using WMPLib;

namespace Ethen
{
    public partial class FrmAzkar : Form
    {
        private int Tiks;

        public FrmAzkar()
        {
            InitializeComponent();
            axWindowsMediaPlayer1.uiMode = "none";
            // 绑定播放状态改变事件
            axWindowsMediaPlayer1.PlayStateChange += axWindowsMediaPlayer1_PlayStateChange;
            TmrAzkar.Start();
        }

        private void FrmAzkar_Load(object sender, EventArgs e)
        {
            string path_to_video_file = @"C:\Mawakit-Al-Salat\azkarFajr.mp4";

            if (File.Exists(path_to_video_file))
            {
                axWindowsMediaPlayer1.URL = path_to_video_file;
                // 设置静音
                axWindowsMediaPlayer1.settings.mute = true;
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
            else
            {
                MessageBox.Show("File not Found");
            }
        }

        // 播放状态改变事件处理
        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            // 当视频进入播放状态时设置全屏
            if (e.newState == (int)WMPPlayState.wmppsPlaying)
            {
                axWindowsMediaPlayer1.fullScreen = true;
            }
        }

        private void TmrAzkar_Tick(object sender, EventArgs e)
        {
            Tiks++;
            this.Text = Tiks.ToString();

            if (Tiks == 540)
            {
                this.Text = "Done";
                TmrAzkar.Stop();
                this.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (axWindowsMediaPlayer1.playState == WMPPlayState.wmppsPlaying)
            {
                axWindowsMediaPlayer1.fullScreen = true;
            }
        }
    }
}

关键修改说明

  • 绑定PlayStateChange事件:监听视频播放状态变化,只有当状态明确变为wmppsPlaying时再设置全屏,确保视频已经准备就绪。
  • 添加静音设置:通过axWindowsMediaPlayer1.settings.mute = true强制视频无声音播放。
  • 移除无效的直接设置:不在FrmAzkar_Load里直接设置全屏,避免因视频未加载完成导致的无效操作。

额外注意事项

  • 确保视频路径使用@转义(或者双反斜杠\\),避免路径解析错误。
  • 若仍出现全屏延迟,可以考虑在事件处理中添加短暂延迟(比如Task.Delay(100).Wait();),但一般情况下监听播放状态足够可靠。

内容的提问来源于stack exchange,提问作者Великая Судьба

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:15:05