当前位置: 首页 > news >正文

VB.NET 2008影音播放器开发指南

1. 创建基本窗体
vb
Imports System.Windows.Forms
Imports System.IO

Public Class MediaPlayerForm
    Inherits Form
    
    Private WithEvents btnOpen As New Button()
    Private WithEvents btnPlay As New Button()
    Private WithEvents btnPause As New Button()
    Private WithEvents btnStop As New Button()
    Private WithEvents axWindowsMediaPlayer As New AxWMPLib.AxWindowsMediaPlayer()
    
    Public Sub New()
        ' 初始化窗体
        Me.Text = "VB.NET 影音播放器"
        Me.Size = New Size(800, 600)
        
        ' 添加Windows Media Player控件
        Me.Controls.Add(axWindowsMediaPlayer)
        axWindowsMediaPlayer.Dock = DockStyle.Fill
        
        ' 添加控制按钮
        SetupControls()
    End Sub
    
    Private Sub SetupControls()
        ' 按钮设置
        btnOpen.Text = "打开文件"
        btnPlay.Text = "播放"
        btnPause.Text = "暂停"
        btnStop.Text = "停止"
        
        ' 按钮布局
        Dim panel As New FlowLayoutPanel()
        panel.Dock = DockStyle.Bottom
        panel.Height = 40
        panel.Controls.AddRange({btnOpen, btnPlay, btnPause, btnStop})
        
        Me.Controls.Add(panel)
    End Sub
End Class
2. 添加Windows Media Player控件
在工具箱上右键点击,选择"选择项"

在COM组件选项卡中找到"Windows Media Player"

勾选并确定,这样工具箱中就会出现该控件

核心功能实现
1. 打开媒体文件
vb
Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
    Dim openFileDialog As New OpenFileDialog()
    
    ' 设置文件过滤器
    openFileDialog.Filter = "媒体文件|*.mp3;*.wav;*.mp4;*.avi;*.wmv|所有文件|*.*"
    
    If openFileDialog.ShowDialog() = DialogResult.OK Then
        Try
            axWindowsMediaPlayer.URL = openFileDialog.FileName
        Catch ex As Exception
            MessageBox.Show("无法播放文件: " & ex.Message)
        End Try
    End If
End Sub
2. 播放控制功能
vb
Private Sub btnPlay_Click(sender As Object, e As EventArgs) Handles btnPlay.Click
    If axWindowsMediaPlayer.playState <> WMPLib.WMPPlayState.wmppsPlaying Then
        axWindowsMediaPlayer.Ctlcontrols.play()
    End If
End Sub

Private Sub btnPause_Click(sender As Object, e As EventArgs) Handles btnPause.Click
    If axWindowsMediaPlayer.playState = WMPLib.WMPPlayState.wmppsPlaying Then
        axWindowsMediaPlayer.Ctlcontrols.pause()
    End If
End Sub

Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
    axWindowsMediaPlayer.Ctlcontrols.stop()
End Sub
高级功能扩展
1. 播放列表功能
vb
Private WithEvents lstPlaylist As New ListBox()
Private playlist As New List(Of String)()

Private Sub SetupPlaylist()
    lstPlaylist.Dock = DockStyle.Right
    lstPlaylist.Width = 200
    Me.Controls.Add(lstPlaylist)
    
    ' 双击播放列表项播放
    AddHandler lstPlaylist.DoubleClick, AddressOf PlaySelectedItem
End Sub

Private Sub PlaySelectedItem(sender As Object, e As EventArgs)
    If lstPlaylist.SelectedIndex >= 0 Then
        axWindowsMediaPlayer.URL = playlist(lstPlaylist.SelectedIndex)
        axWindowsMediaPlayer.Ctlcontrols.play()
    End If
End Sub

' 修改打开文件方法以支持多文件选择
Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Multiselect = True
    openFileDialog.Filter = "媒体文件|*.mp3;*.wav;*.mp4;*.avi;*.wmv|所有文件|*.*"
    
    If openFileDialog.ShowDialog() = DialogResult.OK Then
        For Each file In openFileDialog.FileNames
            playlist.Add(file)
            lstPlaylist.Items.Add(Path.GetFileName(file))
        Next
    End If
End Sub
2. 音量控制
vb
Private WithEvents trackVolume As New TrackBar()

Private Sub SetupVolumeControl()
    trackVolume.Dock = DockStyle.Bottom
    trackVolume.Height = 40
    trackVolume.Minimum = 0
    trackVolume.Maximum = 100
    trackVolume.Value = 50
    axWindowsMediaPlayer.settings.volume = 50
    
    Me.Controls.Add(trackVolume)
    trackVolume.BringToFront()
End Sub

Private Sub trackVolume_Scroll(sender As Object, e As EventArgs) Handles trackVolume.Scroll
    axWindowsMediaPlayer.settings.volume = trackVolume.Value
End Sub
3. 进度条控制
vb
Private WithEvents trackProgress As New TrackBar()
Private isSeeking As Boolean = False

Private Sub SetupProgressBar()
    trackProgress.Dock = DockStyle.Bottom
    trackProgress.Height = 40
    Me.Controls.Add(trackProgress)
    trackProgress.BringToFront()
    
    ' 定时器更新进度
    Dim timer As New Timer()
    timer.Interval = 500
    AddHandler timer.Tick, AddressOf UpdateProgress
    timer.Start()
End Sub

Private Sub UpdateProgress(sender As Object, e As EventArgs)
    If Not isSeeking AndAlso axWindowsMediaPlayer.currentMedia IsNot Nothing Then
        trackProgress.Maximum = CInt(axWindowsMediaPlayer.currentMedia.duration * 1000)
        trackProgress.Value = CInt(axWindowsMediaPlayer.Ctlcontrols.currentPosition * 1000)
    End If
End Sub

Private Sub trackProgress_MouseDown(sender As Object, e As MouseEventArgs) Handles trackProgress.MouseDown
    isSeeking = True
End Sub

Private Sub trackProgress_MouseUp(sender As Object, e As MouseEventArgs) Handles trackProgress.MouseUp
    If isSeeking AndAlso axWindowsMediaPlayer.currentMedia IsNot Nothing Then
        axWindowsMediaPlayer.Ctlcontrols.currentPosition = trackProgress.Value / 1000
        isSeeking = False
    End If
End Sub
完整示例代码
vb
Imports System.Windows.Forms
Imports System.IO

Public Class MediaPlayerForm
    Inherits Form
    
    Private WithEvents btnOpen As New Button()
    Private WithEvents btnPlay As New Button()
    Private WithEvents btnPause As New Button()
    Private WithEvents btnStop As New Button()
    Private WithEvents axWindowsMediaPlayer As New AxWMPLib.AxWindowsMediaPlayer()
    Private WithEvents lstPlaylist As New ListBox()
    Private WithEvents trackVolume As New TrackBar()
    Private WithEvents trackProgress As New TrackBar()
    
    Private playlist As New List(Of String)()
    Private isSeeking As Boolean = False
    
    Public Sub New()
        ' 初始化窗体
        Me.Text = "VB.NET 影音播放器"
        Me.Size = New Size(800, 600)
        
        ' 添加Windows Media Player控件
        Me.Controls.Add(axWindowsMediaPlayer)
        axWindowsMediaPlayer.Dock = DockStyle.Fill
        
        ' 设置控制界面
        SetupControls()
        SetupPlaylist()
        SetupVolumeControl()
        SetupProgressBar()
    End Sub
    
    Private Sub SetupControls()
        ' 按钮设置
        btnOpen.Text = "打开文件"
        btnPlay.Text = "播放"
        btnPause.Text = "暂停"
        btnStop.Text = "停止"
        
        ' 按钮布局
        Dim panel As New FlowLayoutPanel()
        panel.Dock = DockStyle.Bottom
        panel.Height = 40
        panel.Controls.AddRange({btnOpen, btnPlay, btnPause, btnStop})
        
        Me.Controls.Add(panel)
    End Sub
    
    Private Sub SetupPlaylist()
        lstPlaylist.Dock = DockStyle.Right
        lstPlaylist.Width = 200
        Me.Controls.Add(lstPlaylist)
        
        AddHandler lstPlaylist.DoubleClick, AddressOf PlaySelectedItem
    End Sub
    
    Private Sub SetupVolumeControl()
        trackVolume.Dock = DockStyle.Bottom
        trackVolume.Height = 40
        trackVolume.Minimum = 0
        trackVolume.Maximum = 100
        trackVolume.Value = 50
        axWindowsMediaPlayer.settings.volume = 50
        
        Me.Controls.Add(trackVolume)
        trackVolume.BringToFront()
    End Sub
    
    Private Sub SetupProgressBar()
        trackProgress.Dock = DockStyle.Bottom
        trackProgress.Height = 40
        Me.Controls.Add(trackProgress)
        trackProgress.BringToFront()
        
        Dim timer As New Timer()
        timer.Interval = 500
        AddHandler timer.Tick, AddressOf UpdateProgress
        timer.Start()
    End Sub
    
    ' 事件处理方法
    Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
        Dim openFileDialog As New OpenFileDialog()
        openFileDialog.Multiselect = True
        openFileDialog.Filter = "媒体文件|*.mp3;*.wav;*.mp4;*.avi;*.wmv|所有文件|*.*"
        
        If openFileDialog.ShowDialog() = DialogResult.OK Then
            For Each file In openFileDialog.FileNames
                playlist.Add(file)
                lstPlaylist.Items.Add(Path.GetFileName(file))
            Next
        End If
    End Sub
    
    Private Sub btnPlay_Click(sender As Object, e As EventArgs) Handles btnPlay.Click
        If axWindowsMediaPlayer.playState <> WMPLib.WMPPlayState.wmppsPlaying Then
            axWindowsMediaPlayer.Ctlcontrols.play()
        End If
    End Sub
    
    Private Sub btnPause_Click(sender As Object, e As EventArgs) Handles btnPause.Click
        If axWindowsMediaPlayer.playState = WMPLib.WMPPlayState.wmppsPlaying Then
            axWindowsMediaPlayer.Ctlcontrols.pause()
        End If
    End Sub
    
    Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
        axWindowsMediaPlayer.Ctlcontrols.stop()
    End Sub
    
    Private Sub PlaySelectedItem(sender As Object, e As EventArgs)
        If lstPlaylist.SelectedIndex >= 0 Then
            axWindowsMediaPlayer.URL = playlist(lstPlaylist.SelectedIndex)
            axWindowsMediaPlayer.Ctlcontrols.play()
        End If
    End Sub
    
    Private Sub trackVolume_Scroll(sender As Object, e As EventArgs) Handles trackVolume.Scroll
        axWindowsMediaPlayer.settings.volume = trackVolume.Value
    End Sub
    
    Private Sub UpdateProgress(sender As Object, e As EventArgs)
        If Not isSeeking AndAlso axWindowsMediaPlayer.currentMedia IsNot Nothing Then
            trackProgress.Maximum = CInt(axWindowsMediaPlayer.currentMedia.duration * 1000)
            trackProgress.Value = CInt(axWindowsMediaPlayer.Ctlcontrols.currentPosition * 1000)
        End If
    End Sub
    
    Private Sub trackProgress_MouseDown(sender As Object, e As MouseEventArgs) Handles trackProgress.MouseDown
        isSeeking = True
    End Sub
    
    Private Sub trackProgress_MouseUp(sender As Object, e As MouseEventArgs) Handles trackProgress.MouseUp
        If isSeeking AndAlso axWindowsMediaPlayer.currentMedia IsNot Nothing Then
            axWindowsMediaPlayer.Ctlcontrols.currentPosition = trackProgress.Value / 1000
            isSeeking = False
        End If
    End Sub
    
    ' 主程序入口
    Public Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New MediaPlayerForm())
    End Sub
End Class
部署注意事项
1.确保目标计算机安装了Windows Media Player

2.如果是64位系统,可能需要设置项目为x86平台目标

3.部署时包含Interop.WMPLib.dll和AxInterop.WMPLib.dll

http://www.xdnf.cn/news/79903.html

相关文章:

  • 量子计算在密码学中的应用与挑战:重塑信息安全的未来
  • Git,本地上传项目到github
  • 超越GPT-4?下一代大模型的技术突破与挑战
  • OpenLDAP 管理 ELK 用户
  • 运行neo4j.bat console 报错无法识别为脚本,PowerShell 教程:查看语言模式并通过注册表修改受限模式
  • DeepSeek开源引爆AI Agent革命:应用生态迎来“安卓时刻”
  • 【Python】Selenium切换网页的标签页的写法(全!!!)
  • 力扣hot100 LeetCode 热题 100 Java 哈希篇
  • Spring之我见 - Spring MVC重要组件和基本流程
  • N8N 官方 MCP 节点实战指南:AI 驱动下的多工具协同应用场景全解析
  • 多台电脑切换解决方案:KVM 切换器
  • 小技巧1,在vue3中利用自定义ref实现防抖(customRef)
  • 晨控CK-FR12与欧姆龙NX系列PLC配置EtherNet/IP通讯连接操作手册
  • C++_并发编程_thread_01_基本应用
  • LoRA微调技术全景解析:大模型高效适配的革新之道
  • 【RuleUtil】适用于全业务场景的规则匹配快速开发工具
  • ffmpeg 硬解码相关知识
  • spark-SQL实验
  • 川翔云电脑32G大显存集群机器上线!
  • 进阶篇 第 6 篇:时间序列遇见机器学习与深度学习
  • 考研单词笔记 2025.04.22
  • 安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
  • 企业战略到数字化落地 —— 第三章 数字化架构
  • 快速定位达梦缓存的执行计划并清理
  • 基于大疆行业无人机的特色解决方案-无线通信篇:基于蜂窝以及自组网MESH的无线通信C2链路
  • Web3实战:从零开发你的ERC20代币合约
  • 在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改
  • 使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
  • WebRTC服务器Coturn服务器中的通信协议
  • 进阶篇 第 2 篇:自相关性深度解析 - ACF 与 PACF 图完全指南