关于文件夹监视

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

Windows 媒体播放器可以监视包含数字媒体文件的文件夹,并在添加或删除文件时更新库。 此文件夹监视功能由 IWMPFolderMonitorServices 接口提供。

若要使用文件夹监视服务,必须创建处于远程状态的 Player 对象。 有关远程处理的详细信息,请参阅远程处理Windows 媒体播放器控件。 创建播放器的远程实例后,通过在 IWMPPlayer 接口上调用 QueryInterface 来获取指向 IWMPFolderMonitorServices 接口的指针

Windows 媒体播放器保留正在监视的文件夹列表。 若要获取受监视文件夹的列表,请使用 IWMPFolderMonitorServices::get_countIWMPFolderMonitorServices::item 方法。 若要将文件夹添加到列表或从列表中删除文件夹,请分别使用 IWMPFolderMonitorServices::addremove 方法。

启动扫描

监视文件夹通常是不需要显式调用的后台进程。 如果要主动扫描文件夹,请调用 IWMPFolderMonitorServices::startScan。 可以使用 IWMPFolderMonitorServices::stopScan 方法停止正在进行的扫描。

检索文件夹监视状态

IWMPFolderMonitorServices 提供用于检索文件夹监视进程状态的功能。

文件夹扫描分两次完成。 在第一个阶段,Player 逐个扫描受监视文件夹列表中名为 的文件夹,并生成要添加到库中的文件列表。 第二阶段,它会浏览文件列表并将文件添加到库中,还会从库中删除其相应物理文件已从文件系统中删除的任何媒体项。

FolderScanStateChange 事件用于在 Player 切换到新状态时通知程序。 还可以通过调用 get_scanState 来检索当前状态。 当第一次传递开始时,当前状态值为 wmpfssScanning。 在第二次传递期间,状态将切换到 wmpfssUpdating。 该过程完成后,状态将更改为 wmpfssStopped。

当 Player 在第一次扫描受监视的文件夹时,调用 get_scannedFilesCount 以检查扫描的文件数。 get_currentFolder 方法将告诉你当前正在扫描哪个文件夹。

第二次传递开始后,调用 get_addedFilesCount 以检查已添加到库中的文件数。 get_updateProgress方法将告诉你第二次传递的进度,以百分比表示,从 0 到 100。

关于玩家对象模型

IWMPFolderMonitorServices 接口