メディア コンテンツをクライアント システムに配信 (インターネットからダウンロード) しており、メディア ファイルがオペレーターによって開かれた (および表示された) かどうかを確認したいと考えています。ファイル システム ウォッチャー (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 ファイルが任意のプレーヤーによって再生されたとき)。