如何在缺少依赖项时避免异常? (WMP控制)

时间:2013-08-26 03:27:50

标签: vb.net exception audio dependencies mp3

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

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

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

是否有任何替代方案对客户不需要太多? 或者,如果客户端没有安装WMP并且只是在禁用mp3播放功能的情况下继续运行应用程序,是否有办法忽略该异常?

我的实现可能导致启动时异常关闭吗? 这里的代码可能是相关的:(我将包括我如何处理异常,只是因为我可以改变其中的任何内容)

.Net Framework 4.0,目标CPU:x86

对于'Interop.WMPLib.dll','和'嵌入互操作类型'是'真''

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

这或多或少兼容吗? > - <

1 个答案:

答案 0 :(得分:0)

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