【发布时间】:2011-02-12 00:38:58
【问题描述】:
我在使用 .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() 的方法,以便在不遍历整个媒体库(可能很大)的情况下完成它的工作。有人知道吗?
【问题讨论】:
标签: .net vb.net com interop windows-media-player