.NET Framework 3.5 SP1 を使用した VB.NET で、Windows Media Player 12 (wmp.dll) によって提供される WMPLib コンポーネントをいじっています。
名前に基づいてメディア ライブラリからメディア アイテムを取得しようとしています (重複する名前がないことを前提としています)。現時点では、メディア ライブラリ全体を取得して、すべてのメディア アイテムをループし、正しいメディア アイテムが見つかったらループを終了しています。これはうまく機能します (その名前のメディア アイテムが見つからない場合を除く) が、これを行うためのより効率的な方法があることを望んでいました。
これまでの私のコードは次のとおりです。
Public Class WMPTest
Private myWMP As WMPLib.IWMPCore
Private myMediaCollection As WMPLib.IWMPMediaCollection
Private myTrack As WMPLib.IWMPMedia
Private allTracks As WMPLib.IWMPPlaylist
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
myWMP = New WMPLib.WindowsMediaPlayer
myMediaCollection = myWMP.mediaCollection
allTracks = myMediaCollection.getAll
Dim theTrack As WMPLib.IWMPMedia = findTrack("Yellow Submarine")
MessageBox.Show(theTrack.name)
End Sub
Public Function findTrack(ByVal strTrackName As String) As WMPLib.IWMPMedia
For i As Integer = 0 To (allTracks.count - 1)
If allTracks.Item(i).name = strTrackName Then
myTrack = allTracks.Item(i)
Exit For
End If
Next
'myTrack is now the track that we wanted to retrieve
Return myTrack
End Function
End Class
したがって、私が本当に必要としているのは、メディア ライブラリ全体 (巨大になる可能性があります) をループすることなく、findTrack() を最適化して処理を実行する方法です。誰にも手がかりがありますか?