使用 WindowsAPI 中的 mciSendString 函式播放音樂
1. 問題描述
如何使用 WindowsAPI 中的mciSendString 函式播放音樂。
2. 方法
2.1 使用方法
mciSendString : 作為Windows API MCI ( Media Control Interface ) 主要功能,可撥放的多媒體檔案種類很多,如 wav、mid、mp3等。
以下為 mciSendString 的參數與功能 :
指令及參數 | 功能 |
open 設備名稱 [type設備型式] [alias別名] | 開啟撥放設備 |
close 設備名稱 | 關閉撥放設備 |
play 設備名稱 [from起點] [to終點] | 播放 |
pause 設備名稱 | 暫停 |
resume 設備名稱 | 恢復播放(暫停要繼續撥放時使用) |
seek 設備名稱 [to位置 | to start | to end] | 移到 |
stop 設備名稱 | 停止 |
2.2 程式碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.Runtime.InteropServices; // 命名空間提供各種支援COM Interop 和平台叫用服務的成員
namespace WindowsApplication17
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("winmm.dll")]
public static extern int mciSendString(string m_strCmd, string m_strReceive, int m_v1, int m_v2);
[DllImport("Kernel32", CharSet = CharSet.Auto)]
static extern Int32 GetShortPathName(String path, StringBuilder shortPath, Int32 shortPathLength);
/// <summary>
/// 使用mciSendString播放音樂
/// </summary>
/// <param name="name">檔案名稱</param>
/// <param name="command">命令</param>
private static void mciMusic(string name,string command)
{
StringBuilder shortpath = new StringBuilder();
int result = GetShortPathName(name, shortpath, shortpath.Capacity);
name = shortpath.ToString();
string buf = string.Empty;
mciSendString(command + " " + name, buf, buf.Length, 0); //播放
}
private void btnPlay_Click(object sender, EventArgs e)
{
// 播放
mciMusic(@"01.mp3", "play");
}
private void btnPause_Click(object sender, EventArgs e)
{
// 暫停
mciMusic(@"01.mp3", "pause");
}
private void btnStop_Click(object sender, EventArgs e)
{
// 停止
mciMusic(@"01.mp3", "stop");
}
}
}
2.3 執行結果
2.4 範例下載