eVC里,怎样调用Windows media player(系统已有)来播放一段mp3音乐?

leo1015 2007-03-03 11:39:19
eVC里,怎样调用Windows media player(系统已有)
来播放一段mp3音乐?

谢谢大牛们!

...全文
1380 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2011-04-04
  • 打赏
  • 举报
回复
迷世书童 2011-04-03
  • 打赏
  • 举报
回复
看不太懂的说,,,,,
silentliang 2011-04-02
  • 打赏
  • 举报
回复
鄙视7楼COPY
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 norains 的回复:]

#include "stdafx.h "
#include <dshow.h>
#include <streams.h>

#pragma comment (lib, "Ole32.lib ")
#pragma comment (lib, "Strmiids.lib ")

void TestMP3(void);

int WINAPI……
[/Quote]
这个方法不错,我也在用
翔云123456 2010-04-14
  • 打赏
  • 举报
回复
不错不错~
harktrip 2010-03-20
  • 打赏
  • 举报
回复

你們一堆人放屁

SDK內沒有DCOM要怎麼通過編譯???
sodwell 2008-08-07
  • 打赏
  • 举报
回复
wfwd
谢谢!你写的那个EVC调用WIN2000meidaplayer那个帖子,太爽了!
lenux 2007-09-11
  • 打赏
  • 举报
回复
暂停,循环播放都可以实现
lenux 2007-09-11
  • 打赏
  • 举报
回复
我用的和norains() 的方法一样
evc和vs2005都可以用
普通的wince 5.0内核的平台。
panther124 2007-09-10
  • 打赏
  • 举报
回复
要说的楼上的都说了,呵呵。
wfwd 2007-05-22
  • 打赏
  • 举报
回复
WinCE4.2 操作系统里自带的 Windows Media Player 控件是 6.4版本,根本不是它界面上显示的 9.0 版本。这个WinCE4.2 操作系统里的 6.4 控件跟 Windows2000 下的 6.4 版本一模一样。明确以上两点后,一切就好办了!

首先,在PC机的[开始]-[运行]里执行以下命令:
regsvr32 c:\windows\system32\wmp.dll /u
这句的意思就是卸载掉 Windows Media Player 9.0 版本的控件的注册。然后,在PC机的[开始]-[运行]里执行以下命令:
regsvr32 c:\windows\system32\msdxm.ocx
这句的意思是注册 Windows Media Player 6.4 版本的控件。

  接下来,打开 eMbedded Visual C++ 4.0,建立一个MFC对话框工程,在向导中把允许 ActiveX 控件打上钩,一路下一步。完成向导后,选择 [Project] 菜单中的 [Add to project] 中的 [Components and controls],弹出 Componests and Controls Gallery 对话框,打开 Registered ActiveX Controls 文件夹,显示出好几项来,最后面一项就是 [Windows Media Player],选中后点击[Insert]按钮,弹出Confirm Classes对话框,点OK按钮确定。这时,在对话框编辑窗口中的工具栏中就应该有 Windows Media Player 控件了,应该在最低下那个,好像显示的是个叉。
注意: 当你打开Registered ActiveX Controls文件夹后,如果里面没有出现Windows Media Player,那么你需要点旁边的 Add Control 按钮,定位到 c:\windows\system32\msdxm.ocx,完成后就会显示出来。

  现在,从工具栏中拖一个 Windows Media Player 控件到对话框中,然后在 ClassWizard 中建立一个指向 Windows Media Player 控件的变量.
  最后,选择你自己的平台编译一个Release版本,然后在你的嵌入式设备上运行一下看看,跟在Windows2000平台上没什么两样。

开发环境和开发平台:

PC机端:

操作系统:Windows XP Professional SP2

开发工具:eMbedded Visual C++ 4.0

嵌入式设备端:

操作系统:Windows CE .Net 4.2

硬件平台:三星2410
truelove7283159 2007-03-13
  • 打赏
  • 举报
回复
up
norains 2007-03-05
  • 打赏
  • 举报
回复
#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();
}
YourKing 2007-03-05
  • 打赏
  • 举报
回复
如果media player是默认播放器的话
SHELLEXECUTEINFO sei;
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.hwnd = this->m_hWnd;;
sei.lpVerb = _T("open");
sei.lpFile = _T("test.mp3");
sei.lpDirectory = _T("\\");
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
  • 打赏
  • 举报
回复
是不是调用ocx 可以啊
定植的时候可以选的
绿色夹克衫 2007-03-05
  • 打赏
  • 举报
回复
不太明白问题的意思,歧义太多了,如果是打开media player播放,直接用命令行就可以。
xyz666 2007-03-04
  • 打赏
  • 举报
回复
楼主是想让你的模拟器自带的Windows media player组件来播放吗?

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧