我在使用 .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() 的方法来完成它的工作,而无需遍历整个媒体库(这可能是巨大的)。有人有线索吗?