在C#中访问媒体文件的shell属性“Length”(又名持续时间)

时间:2015-11-08 12:41:19

标签: c# shell video duration

我注意到在Windows 7中每个媒体文件的shell属性中,视频文件的持续时间实际上称为“长度”。有人知道使用shell访问长度属性的快捷方法吗?

1 个答案:

答案 0 :(得分:2)

所以我找到了一个非常简短快捷的方式来访问"长度"只要您知道该属性的等效索引号,就可以使用媒体文件的shell属性或任何shell属性。

首先需要在项目中向shell32添加一个引用,如下所示:

  1. 右键单击项目

  2. 点击添加参考

  3. 点击添加参考窗口

  4. 中的.COM标签
  5. 选择 Microsoft Shell控件和自动化

  6. 点击确定

  7. 然后在代码隐藏中添加使用Shell32; 。 现在,您可以在foreach循环中使用GetDetailsOf()方法为文件夹中的每个媒体文件提取length属性:

    string[] supportedExtensions = new[] { ".mov", ".mp4", ".avi", ".mpeg", ".mpg", ".wmv", ".mkv", ".m4v", ".flv" };
    
    var allFiles = Directory.GetFiles(SelectedFolderPath, "*.*", SearchOption.TopDirectoryOnly).Where(s => supportedExtensions.Contains(System.IO.Path.GetExtension(s).ToLower()));
    
    foreach (string name in allFiles)
    
    {
       Shell shell = new Shell();
       Folder rFolder = shell.NameSpace(@SelectedFolderPath);
       FolderItem rFiles = rFolder.ParseName(System.IO.Path.GetFileName(name));
       string videosLength = rFolder.GetDetailsOf(rFiles, 27).Trim();
    }
    

    Where," SelectedFolderPath"应该是您要扫描的文件夹,以及您在GetDetailsOf方法中作为参数看到的数字27,是"长度"的索引号。 Shell属性,具体。

    所以现在你有一个媒体文件的持续时间在字符串" videosLength"在##:##:##格式。

    希望这有帮助! 干杯!