2012-01-21 6 views
0

Windows OSとビデオプレーヤー(例:VLCメディアプレーヤーまたはGOMプレーヤー)があるとします。プレーヤAPI(ほとんどの場合公開APIはありません)を使用するほかに、再生された動画(たとえば、ファイル名や公開されたムービーのパス)を.NETで捕捉する方法はありますか?.NET C/C++/C#を使用してビデオをプレイヤーで開いたことを検出する方法は?

アドバイスありがとうございます。

+2

このような一般的な定義で信頼できる方法はありません。 –

答えて

0

私が知る限り、これらのプログラムのほとんどは、標準のWindowsライブラリ(DirectShowやMedia Foundationなど)を表示することはありませんが、100%のカバレッジを得ることはできません。

あなたはだけファイル名またはパスをしたい場合は、あなたmonitor files with HookAPI.dllができ、一般的なビデオフォーマット(AVI、MP4、MOV、FLV、など)

+0

.NETでは、HookAPIのP/Invokeバインディングを作成するか、[EasyHook](http://easyhook.codeplex.com/)のような既存のバインディングを使用するだけです。この**は検索索引付けと混同するかもしれませんが、ユーザーが開いたファイルを検索索引付け/バックグラウンドのプロセスと区別する方法があります。 –

0

はまあ..私は思うのファイル拡張子をチェックvideo file formatsMainWindowTitleprocessess 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. 
     } 

    } 
関連する問題