Windows OSとビデオプレーヤー(例:VLCメディアプレーヤーまたはGOMプレーヤー)があるとします。プレーヤAPI(ほとんどの場合公開APIはありません)を使用するほかに、再生された動画(たとえば、ファイル名や公開されたムービーのパス)を.NETで捕捉する方法はありますか?.NET C/C++/C#を使用してビデオをプレイヤーで開いたことを検出する方法は?
アドバイスありがとうございます。
Windows OSとビデオプレーヤー(例:VLCメディアプレーヤーまたはGOMプレーヤー)があるとします。プレーヤAPI(ほとんどの場合公開APIはありません)を使用するほかに、再生された動画(たとえば、ファイル名や公開されたムービーのパス)を.NETで捕捉する方法はありますか?.NET C/C++/C#を使用してビデオをプレイヤーで開いたことを検出する方法は?
アドバイスありがとうございます。
私が知る限り、これらのプログラムのほとんどは、標準のWindowsライブラリ(DirectShowやMedia Foundationなど)を表示することはありませんが、100%のカバレッジを得ることはできません。
あなたはだけファイル名またはパスをしたい場合は、あなたmonitor files with HookAPI.dllができ、一般的なビデオフォーマット(AVI、MP4、MOV、FLV、など)
.NETでは、HookAPIのP/Invokeバインディングを作成するか、[EasyHook](http://easyhook.codeplex.com/)のような既存のバインディングを使用するだけです。この**は検索索引付けと混同するかもしれませんが、ユーザーが開いたファイルを検索索引付け/バックグラウンドのプロセスと区別する方法があります。 –
はまあ..私は思うのファイル拡張子をチェックvideo file formats
をMainWindowTitle
のprocessess that's running
で監視しているか、映画プレーヤーが動作しているかどうかを確認してください。
var videoFileFormats = new List<string>
{
{".3gp"},
{".mp4"} //etc..
};
var players = new List<string>
{
{"wmplayer"} //etc..
};
var processes = Process.GetProcesses();
foreach (var proc in processes) {
try {
string appName = proc.ProcessName;
string appFileName = proc.MainModule.FileName;
string appExt = Path.GetExtension(appFileName);
if (videoFileFormats.Contains(appExt) || players.Contains(appName)) {
//do something..
//found..
}
} catch (Exception E) {
//it's because you can't get some process of system.
}
}
このような一般的な定義で信頼できる方法はありません。 –