Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用.NET C/C++/C#?_C#_C++_.net_Windows_Video - Fatal编程技术网

如何使用.NET C/C++/C#?

如何使用.NET C/C++/C#?,c#,c++,.net,windows,video,C#,C++,.net,Windows,Video,假设我们有Windows操作系统和一些视频播放器(如VLC媒体播放器或GOM播放器)。除了使用播放器API(大多数都没有任何公共API)之外,还有什么方法可以在.NET中捕获播放的视频(例如:打开的电影的文件名或路径) 谢谢你的建议。 据我所知,这些程序大部分都不会通过一些标准的Windows库来显示视频——可能是DirectShow或MediaFoundation,但是你不会得到100%的覆盖率。 如果您只想知道文件名或路径,您可以检查文件扩展名以了解常见的视频格式(avi、mp4、mov、f

假设我们有Windows操作系统和一些视频播放器(如VLC媒体播放器或GOM播放器)。除了使用播放器API(大多数都没有任何公共API)之外,还有什么方法可以在.NET中捕获播放的视频(例如:打开的电影的文件名或路径)


谢谢你的建议。

据我所知,这些程序大部分都不会通过一些标准的Windows库来显示视频——可能是DirectShow或MediaFoundation,但是你不会得到100%的覆盖率。
如果您只想知道文件名或路径,您可以检查文件扩展名以了解常见的视频格式(avi、mp4、mov、flv等)

好的。。我认为你可以更近一步,就是监控电影播放器的输入和/或看电影播放器是否正在运行

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.
         }

   }
var videoFileFormats=新列表
{
{.3gp},
{.mp4}//等。。
};
var players=新列表
{
{“wmplayer”}//等。。
};
var processs=Process.getprocesss();
foreach(过程中的var过程){
试一试{
字符串appName=proc.ProcessName;
字符串appFileName=proc.MainModule.FileName;
字符串appExt=Path.GetExtension(appFileName);
if(videoFileFormats.Contains(appExt)| | players.Contains(appName)){
//做点什么。。
//找到。。
}
}捕获(例外E){
//这是因为你不能得到一些系统的过程。
}
}

在这样的一般定义中,没有可靠的方法可以做到这一点。在.NET中,您只需为HookAPI创建P/Invoke绑定或使用现有绑定,如。这可能会与搜索索引混淆,但您可能会找到一种方法来区分用户打开的文件与搜索索引/后台进程。