vb.net - 缺少依赖项时如何避免异常? (WMP控制)

标签 vb.net exception audio dependencies mp3

我有一个应用程序,可以播放来自MP3格式的URL的音频,直到现在,我一直在使用WMP控件执行此任务。 (Interop.WMPLib.dll)

但是最近我发现我的应用程序无法启动,对没有安装WMP的客户端抛出“System.InvalidOperationException”。

我通过搜索找到的唯一替代方法是使用仅支持WAV文件的方法,或者仍需要WMP的方法。

有什么替代方案不需要客户太多吗?
或者,如果客户端未安装WMP,而只是在禁用mp3播放功能的情况下继续运行应用程序,是否可以忽略该异常?

我的实现可能会导致启动时关闭异常吗?
以下是可能相关的代码:(我将介绍如何处理异常,以防万一我可以更改其中的内容)

.Net Framework 4.0, objective-c PU:x86

哦,“Interop.WMPLib.dll”的“嵌入Interop类型”为“True”

Imports WMPLib

Public Class frmMain
    Inherits System.Windows.Forms.Form
    Public Sub New()
        MyBase.New()
        AddHandler Application.ThreadException, AddressOf OnThreadException
        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionEventRaised

        InitializeComponent()
        System.Windows.Forms.Application.EnableVisualStyles()
    End Sub
    Sub UnhandledExceptionEventRaised(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
        If e.IsTerminating Then
            Dim o As Object = e.ExceptionObject
            MessageBox.Show(o.ToString)
        End If
    End Sub
    Private Sub OnThreadException(ByVal sender As Object, ByVal e As ThreadExceptionEventArgs)
        MessageBox.Show(e.Exception.Message & Environment.NewLine & Environment.NewLine & e.Exception.InnerException.ToString)
    End Sub

    Public WithEvents mp3Player As New WindowsMediaPlayer

    'frmMain_Load etc..

    Private Sub btnAudio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAudio.Click
        Dim mp3URL As String = "http://host.com/file.mp3"
        mp3Player.URL = mp3URL
        mp3Player.controls.play()
    End Sub
End Class

当然,代码中还有更多内容,但是我只包含任何相关内容。

帮助感激〜!

编辑:我发现这种方法http://content.gpwiki.org/index.php/VBNET:AudioVideoPlayback

差不多兼容吗? >-<

最佳答案

进行简单的文件检查。在程序初始化时,检查计算机上是否存在文件 Interop.WMPLib.dll ,否则,您将不允许程序运行

关于vb.net - 缺少依赖项时如何避免异常? (WMP控制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436178/

相关文章:

ios - 在 iOS 上停止另一个应用程序的背景音频

javascript - HTML5 和 jQuery 停止了吗?

vb.net - 判断 JPG 文件是否打开

c# - 如何在 WinDBG 中查看托管异常详细信息?

asp.net - ADAL token 不刷新

c# - 使用 WinDbg 从 minidump 中确定 InnerException 的行号

java - Hibernate初学者问题——简单映射与非简单异常!

.net - 有没有一种方法可以使用 .NET 以编程方式提取 Flash SWF 文件的声音部分?

vb.net - 根据条件为 Tablix 文本框 RDLC 报告中的特定单元格着色 - Vb.net - RDLC

c# - 在运行时确定控件的 'AutoSize' 大小