C#學習筆記
using System.IO;
using Shell32;
using Microsoft.Win32;
using System.Runtime.InteropServices;
/// <summary>
/// 取得音樂檔播放長度的方法
/// </summary>
/// <param name="MusicPath"></param>帶入音樂.mp3的位置 例如 C:\\hello.mp3
/// <returns></returns>
public int GetMediaLen2(string MusicPath)
{
string dirName = Path.GetDirectoryName(MusicPath);//---------取得檔案路徑 (不包含檔案)
string SongName = Path.GetFileName(MusicPath);//-取得檔案名稱 (此處為音樂檔案.mp3)
FileInfo fInfo = new FileInfo(MusicPath);//------------取得檔案的相關屬性
ShellClass sh = new ShellClass();//----------------------取得文件屬性 使用microsoft的Com元 //件 Dll的Embed Interop Type(內嵌Interop類型)=false
Folder dir = sh.NameSpace(dirName);//----------------------將檔案路徑轉為Folder的型態
FolderItem item = dir.ParseName(SongName);//---------------將檔案轉為FolderItem的型態
string SongTime = Regex.Match(dir.GetDetailsOf(item, -1), "\\d{2}:\\d{2}:\\d{2}").Value;
//取得string型態的音樂長度
//dir.GetDetailsof(該路徑下的這個檔案 , -1 ) -1 = 所有的資料
//Regex.Match("字串" , 找出指定的字串項目) 時間格式為 00:00:00 所以
// \\d{2}:\\d{2}:\\d{2}
SongTime = SongTime.Replace(':', '0');//----------------將:以0取代
int data = int.Parse(SongTime);//--------------------------再轉為int 即為秒數
return data;
}
在 dir.GetDetailsof 時 第二項參數有以下
-1 所有資料
0 檔案的名稱包含附檔名 (ex: hello.mp3)
1 檔案大小 (ex: 47.4kb)
2 格式 (ex: MP3 格式聲音)
在 dir.GetDetailsof 時 第二項參數有以下
-1 所有資料
0 檔案的名稱包含附檔名 (ex: hello.mp3)
1 檔案大小 (ex: 47.4kb)
2 格式 (ex: MP3 格式聲音)