我正在将媒体内容传送到客户端系统(从 Internet 下载)并想确认媒体文件是否已被操作员打开(和查看)。我正在使用文件系统观察程序(C# 3.5)来检查文件的最后访问时间(所以每当播放媒体文件时,我应该得到事件)并发送确认。
我已经在我的 Windows 7 机器的注册表中启用了最后一次访问时间并重新启动了我的系统。文件系统观察程序会在打开的目录上触发事件,但不会在媒体播放上触发。
这是我的代码:
private FileSystemWatcher fsWatcher = null;
private static Object objLock = new Object();
private void StartAccessWatcher(string _folderPath)
{
fsWatcher = new FileSystemWatcher(_folderPath, "*.*");
fsWatcher.Changed += new FileSystemEventHandler(fsWatcher_Changed);
fsWatcher.IncludeSubdirectories = true;
fsWatcher.NotifyFilter = NotifyFilters.LastAccess;
fsWatcher.EnableRaisingEvents = true;
}
private void fsWatcher_Changed(object sender, FileSystemEventArgs e)
{
lock (objLock)
{
fsWatcher.EnableRaisingEvents = false;
DisplayMessage(string.Concat(e.ChangeType, " ", e.FullPath));
fsWatcher.EnableRaisingEvents = true;
}
}
private void btn_StartWatcher_Click(object sender, EventArgs e)
{
StartAccessWatcher(@"E:\Surewaves\Media-Store\MP1 Videos");
}
您也可以从这里下载我的代码示例。
请告诉我如何才能最好地实现它?我需要获取最后一次访问时间(任何播放器播放视频或音频或图像或 .swf 文件时)?