我在.NET Framework 3.5 SP1的VB.NET中搞乱了Windows Media Player 12(wmp.dll)提供的WMPLib组件。更有效的在WMP媒体库中查找媒体项目的方法?
我试图从我的媒体库中根据其名称检索媒体项目(假设没有重复的名称)。目前,我正在抓取整个媒体库,并循环播放每个媒体项目,并在找到正确的媒体项目时退出循环。这很有效(除了找不到具有该名称的媒体项目时),但我希望有一种更有效的方式来做到这一点。
这是到目前为止我的代码:
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()做它的事,而不在整个媒体库循环(这可能是巨大的)的方式。任何人都有线索?