2015-11-08 7 views

ответ

2

Таким образом, я нашел очень короткий и быстрый способ доступа к свойству оболочки «Длина» медиафайла или любому свойству оболочки, если вы знаете эквивалентный номер индекса этого свойства.

Прежде вам нужно добавить ссылку в вашем проекте Shell32 так:

  1. правой кнопкой мыши проект

  2. нажмите кнопку Добавить ссылку

  3. вкладку Нажмите .COM в Добавить ссылку окна

  4. Microsoft Shell Controls and Automation

  5. Нажмите OK

Затем добавить используя Shell32; в вашем коде. И теперь вы можете извлечь свойство длины для каждого мультимедийного файла в папке с методом GetDetailsOf() в цикле Еогеаспа:

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» должен быть папкой вы хотите сканировать и номер 27, который вы видите как параметр в методе GetDetailsOf, является номером индекса для свойства оболочки «Длина», особенно.

Итак, теперь у вас есть продолжительность медиа-файла внутри строки «videosLength» в формате ##: ##: ##.

Надеюсь, это поможет! Приветствия!