2015-11-08 40 views

回答

2

因此,只要知道該屬性的等效索引號,我就發現了一種非常簡短快捷的方式來訪問媒體文件的「Length」shell屬性或任何shell屬性。

,你首先需要在你的項目中添加引用SHELL32這樣的:

  1. 右鍵單擊項目

  2. 單擊添加引用添加引用

  3. 點擊.COM標籤窗口

  4. 選擇Microsoft Shell Controls and Automation

  5. 單擊確定

然後用SHELL32添加;在您的代碼隱藏。 現在你可以提取每一個媒體文件的長度屬性與GetDetailsOf()方法的文件夾中,在foreach循環:

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(); 
} 

其中,「SelectedFolderPath」應該是要掃描和文件夾在GetDetailsOf方法中看到的作爲參數的數字27是「Length」Shell屬性的索引號,具體取值爲。

因此,現在您在##:##:##格式的字符串「videosLength」中擁有媒體文件的持續時間。

希望這有助於! 乾杯!