//我成功運行過的代碼:
#include "stdafx.h"
#include <dshow.h>
#include <streams.h>
#pragma comment (lib,"Ole32.lib")
#pragma comment (lib,"Strmiids.lib")
void TestMP3(void);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
TestMP3();
return 0;
}
void TestMP3()
{
IGraphBuilder *pGraph;
/* 指向Filter Graph的指標 */
IMediaControl *pMediaControl;
/* 指向MediaControl對象的指標 */
/* 初始化,程式啟動時執行一次即可 */
CoInitialize(NULL);
/**************************************************************************/
/* 以下程式每次播放MP3(或其他格式)檔案時調用 */
/* 建立一個Filter Graph manager */
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph);
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
/* 串連播放指定檔案所需的filter */
pGraph->RenderFile(L"//test.mp3", NULL);
/* 開始播放指定的檔案 */
pMediaControl->Run();
/* 檔案的播放在DirectShow中獨立線程中進行,此處等待 */
MessageBox(NULL, L"點擊[OK]結束播放", L"Play MP3", MB_OK);
pMediaControl->Stop();
/* 停止播放 */
pMediaControl->Release();
/* 釋放對象 */
pGraph->Release();
/**************************************************************************/
/* 程式結束時調用 */
CoUninitialize();
}