본문 바로가기
1_ 맛있는프로그래밍/C# and Visual C++

C# - MP3 간단하게 재생하기 (mciSendString, winmm.dll)

by 준환이형님 2012. 1. 5.

예전에 dll을 통해 mp3를 재생하는 방법( http://topnanis.tistory.com/136)을 올렸었는데 주석을 원하시는 분들이 계셔서 다시 한번 포스팅합니다. 

우선 이 방법은 mp3뿐만 아니라 유사한 방법으로 mpg, wav와 같은 비디오 재생도 가능한듯 보이구요.
( http://blog.naver.com/dinho3/120027507526 )


이해하기 좋으시라고 바로 쓸수 있는 예제로 편집해 보았습니다. 아래 코드는 재생을 위한 최소한의 코드입니다.


using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Playing_MP3_songs
{
    public partial class Form1 : Form
    {

//c코드로 작성된 dll을 부르기 위함. C#에서 지원하는게 아니므로 네이티브코드에서 작성된 코드를 활용한다는 거네요 
        [DllImport("winmm.dll")]
//dll 속에 있는 이 메소드를 사용하겠다. 물론 dll속의 파일을 편집하거나 디버깅을 할수는 없답니다. (.h)에 제공해주시는 것만 쓰는거죠
        private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);


        public Form1()
        {
//            form1내에 버튼등의 UI라 주석처리해봤구요 
//            InitializeComponent();

//파일명은 경로를 찍어주시면 됩니다. debug나 release 폴더 내에 있는 파일을 바로 쓰실때에는 " .\\abc.mp3"
            mciSendString("open \"" + "c:\\0.mp3" + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
            mciSendString("play MediaFile", null, 0, IntPtr.Zero);

        }
    }
}
  

끝. 재생이 되는 코드는  임폴트1줄, 전역2줄, 지역에 경로1줄, 실행1줄 총 네줄 입니다.

콘솔창(form에 띄우지 않고) 실행은 되지 않습니다. dll이라 에러문은 뜨지 않습니다. 


파일을 리스트에 넣어 곡을 일시정지시키거나 다음곡, 전곡 등의 확장된 기능을 가진 라이브러리를 첨부합니다. 필요하신 분들 사용하세요~