Как определить, что видео было открыто в плеере с .NET C / C ++ / C #? - PullRequest
0 голосов
/ 21 января 2012

Представьте, что у нас есть ОС Windows и несколько видеоплееров (например, VLC media player или GOM Player).Есть ли способ поймать воспроизводимые видео (например, имя файла или путь к открытому фильму) в .NET, кроме использования API проигрывателей (у большинства из них нет общедоступного API)..

Ответы [ 2 ]

0 голосов
/ 22 января 2012

Ну .. Я думаю, что ближе вы можете пойти, это, наблюдая за 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.
         }

   }
0 голосов
/ 21 января 2012

Насколько я знаю, большинство из этих программ не будут проходить через какую-то стандартную библиотеку Windows для отображения видео - возможно, DirectShow или Media Foundation, но вы не получите 100% -ное покрытие таким образом.

Если вы просто хотите указать имя файла или путь, вы можете отслеживать файлы с помощью HookAPI.dll и проверить расширение файла для распространенных видеоформатов (avi, mp4, mov, FLV и т. д.)

...