VB和c#取得mp3长度

简介:

<< VB.Net >>

 
  
  1. Imports System.IO
  2. Imports Microsoft.Win32
 
  
  1. ' API 宣告
  2. Private Declare Function mciSendStringA Lib "Winmm.dll" _
  3. (ByVal lpszCommand As String, ByVal lpszReturnString As String, _
  4. ByVal cchReturn As Integer, ByVal hwndCallback As IntPtr) As Integer

 
  
  1. Private Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Handles Button1.Click
  2. MessageBox.Show(Cvt2HMS(GetMediaLen("C:\音樂欣賞\Candy Shop.mp3")))
  3. MessageBox.Show(Cvt2HMS(GetMediaLen("C:\音樂欣賞\國境之南.wmv")))
  4. MessageBox.Show(Cvt2HMS(GetMediaLen("C:\音樂欣賞\Time to say goodbye.wma")))
  5. MessageBox.Show(Cvt2HMS(GetMediaLen("C:\音樂欣賞\寶貝.flv")))
  6. End Sub

 
  
  1. ' 取得多媒體檔案長度
  2. Private Function GetMediaLen(ByVal File As String) As Long
  3. Dim key As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\MCI Extensions"
  4. Dim RegKey As RegistryKey = Registry.LocalMachine.OpenSubKey(key)
  5. Dim FileExt As String = (Path.GetExtension(File).Replace(".", ""))
  6. Dim tp As String = RegKey.GetValue(FileExt, "MPEGVideo")
  7. RegKey.Close()
  8. Dim tm As New String(Chr(0), 128)
  9. Dim cmd As String
  10. cmd = "open """ & File & """ type " & tp & " alias Media"
  11. If mciSendStringA(cmd, vbNullString, 0, 0) = 0 Then
  12. If mciSendStringA("status Media length", tm, tm.Length, 0) = 0 Then
  13. If tm <> "" Then GetMediaLen = Convert.ToInt32(tm) \ 1000
  14. End If
  15. mciSendStringA("close Media", vbNullString, 0, 0)
  16. End If
  17. End Function

 
  
  1. ' 轉換成時分秒
  2. Private Function Cvt2HMS(ByVal sec As Long) As String
  3. Dim h, m, s As Integer
  4. Cvt2HMS = ""
  5. h = sec \ 3600
  6. If h > 0 Then Cvt2HMS &= h.ToString & "時"
  7. m = (sec Mod 3600) \ 60
  8. If m > 0 Then Cvt2HMS &= m.ToString & "分"
  9. s = (sec Mod 3600) Mod 60
  10. If s > 0 Then Cvt2HMS &= s.ToString & "秒"
  11. End Function

<< C# >>

 
  
  1. using System.IO;
  2. using Microsoft.Win32;
 
  
  1. // API 宣告
  2. [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
  3. public static extern int mciSendString(
  4. string lpstrCommand, string lpstrReturnString,
  5. int uReturnLength, int hwndCallback);

 
  
  1. private void button1_Click(object s, EventArgs e)
  2. {
  3. MessageBox.Show(GetMediaLen(@"D:\音樂欣賞\Dirty.mp3").ToString() + " Sec");
  4. }

 
  
  1. // 取得多媒體檔案長度
  2. private long GetMediaLen(string File)
  3. {
  4. long RetVal = 0;
  5. string key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\MCI Extensions";
  6. RegistryKey RegKey = Registry.LocalMachine.OpenSubKey(key);
  7. string FileExt = Path.GetExtension(File).Replace(".", "");
  8. string tp = RegKey.GetValue(FileExt, "MPEGVideo").ToString();
  9. RegKey.Close();
  10. string tm = new string((char)0, 128);
  11. if (mciSendString("open \"" + File + "\" type " + tp + " alias Media", null, 0, 0) == 0)
  12. {
  13. if (mciSendString("status Media length", tm, tm.Length, 0) == 0)
  14. {
  15. tm = tm.Trim((char)0);
  16. if (!string.IsNullOrEmpty(tm)) RetVal = Convert.ToInt64(tm) / 1000;
  17. }
  18. mciSendString("close Media", null, 0, 0);
  19. }
  20. return RetVal;
  21. } 本文转自94cool博客园博客,原文链接http://www.cnblogs.com/94cool/archive/2009/08/31/1557020.html,如需转载请自行联系原作者
相关文章
|
C# API
c# 播放mp3
转载:http://www.cnblogs.com/igrl/archive/2010/03/29/1699975.html /// /// 播放MP3文件 /// public class Mp3Player { //定义API函数使用的字符串变量 [MarshalAs(UnmanagedType.
1265 0
|
11月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
432 19
|
12月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
2404 0
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
1541 12
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
794 4
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
475 3
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
829 0