0

URL から MP3 形式でオーディオを再生できるアプリケーションがあり、今までこのタスクに WMP コントロールを使用してきました。(Interop.WMPLib.dll)

しかし最近、アプリケーションが起動せず、WMP がインストールされていないクライアントに対して「System.InvalidOperationException」をスローすることがわかりました。

検索して見つけた唯一の代替方法は、WAV ファイルのみをサポートする方法、または WMP を必要とする方法を使用することです。

クライアントから多くを必要としない代替手段はありますか? または、クライアントに WMP がインストールされておらず、mp3 再生機能を無効にしてアプリケーションを実行し続ける場合に、その例外を無視する方法はありますか?

私の実装は、起動時にクローズ オン 例外を引き起こしている可能性がありますか? 関連する可能性のあるコードは次のとおりです(変更できるものがある場合に備えて、例外を処理する方法を含めます)

.Net Framework 4.0、ターゲット CPU: x86

ああ、「Interop.WMPLib.dll」の「Embed Interop Types」は「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

それは多かれ少なかれ互換性がありますか?>-<

4

1 に答える 1

0

簡単なファイルチェックを行います。プログラムの初期化時に、ファイルInterop.WMPLib.dllがマシンに存在するかどうかを確認します。存在しない場合、プログラムの実行を許可しません。

于 2013-08-26T07:40:55.903 に答える