[C#]使用 WindowsAPI 中的 mciSendString 函式播放音樂

  • 37220
  • 0
  • 2010-08-02

使用 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 範例下載

[C#]使用mciSendString播放音樂.rar