社区
GAME,图形处理/多媒体
帖子详情
自己写了个播放器,要求双击MP3文件后, 只允许打开一个应用程序来播放
jozosoft
2006-12-22 08:44:02
自己写了个播放器,现在有处问题不好解决:
双击MP3文件后,我要求调用我的程序来放,可以实现。但是,每双击一个文件,系统就打开一个新的播放器,这当然是不允许的。
1、同一时刻只允许打开一个应用程序我会,但是,当第二个应用程序打开后,如果让它把mp3文件名传递给第一次打开的程序?
2、(此问题能解决一下更好) 如果让程序支持更多的音乐格式?如:rm之类。
谢谢!
...全文
215
9
打赏
收藏
自己写了个播放器,要求双击MP3文件后, 只允许打开一个应用程序来播放
自己写了个播放器,现在有处问题不好解决: 双击MP3文件后,我要求调用我的程序来放,可以实现。但是,每双击一个文件,系统就打开一个新的播放器,这当然是不允许的。 1、同一时刻只允许打开一个应用程序我会,但是,当第二个应用程序打开后,如果让它把mp3文件名传递给第一次打开的程序? 2、(此问题能解决一下更好) 如果让程序支持更多的音乐格式?如:rm之类。 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hai1039
2006-12-22
打赏
举报
回复
我是重载WndProc来截获消息的,如果你用别的办法就不知道了
hai1039
2006-12-22
打赏
举报
回复
可能你没有把播放器的Caption设成"语音播放器 "
需要有 Form1->Caption = g_szPlayerCaption;这样一句,不然找不到窗口
jozosoft
2006-12-22
打赏
举报
回复
用SendMessage 发送出消息后,第一个程序接收不到!
仅首次运行时,ParamStr(1); 才有用.
请一楼兄弟再帮忙
hai1039
2006-12-22
打赏
举报
回复
俺是用BCB的,delphi的改一下,原理是一样的。
hai1039
2006-12-22
打赏
举报
回复
HWND hVoicePlayerMutex; // The Mutex method
DWORD g_nMsgID = 0x3388;
AnsiString g_szCmdFileName = GetFileNameFromCMD();
AnsiString g_szPlayerCaption = "语音播放器 ";
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
hVoicePlayerMutex = CreateMutex(NULL, FALSE, "RunOnlyOneInstanceVoicePlayer");
if(hVoicePlayerMutex == NULL||ERROR_ALREADY_EXISTS == ::GetLastError())
{
SendNewFileMsg(g_szPlayerCaption, g_nMsgID, g_szCmdFileName);
return(0);
}
....
}
void SendNewFileMsg(AnsiString strPlayerName, int nMsgID,
AnsiString strFileName)
{
COPYDATASTRUCT sNewFileName;
HWND hPlayer = NULL;
sNewFileName.dwData = nMsgID;
sNewFileName.cbData = strFileName.Length() + 1;
sNewFileName.lpData = (void *) (strFileName.c_str());
hPlayer = FindWindow(NULL, strPlayerName.c_str());
if(NULL != hPlayer)
{
::SendMessage(hPlayer, WM_COPYDATA, (WPARAM) Application->Handle,
(LPARAM) &sNewFileName);
}
}
//---------------------------------------------------------------------------
AnsiString GetFileNameFromCMD(void)
{
AnsiString szFileName;
if(ParamCount > 0)
{
szFileName = ParamStr(1);
}
return(szFileName);
}
jozosoft
2006-12-22
打赏
举报
回复
Delphi自带的控件/
请一楼的详细说一下第一个问题的方法:如果把文件名传给第一次运行的程序
pikapig620
2006-12-22
打赏
举报
回复
rm似乎只有REALPLAYER支持的
你用啥插件做的啊
hai1039
2006-12-22
打赏
举报
回复
首先创建mutex来保证一个时间只有一个程序打开,如果不能创建,根据程序的title找到前一instance的handle,然后用sendmessage送新mp3文件名,同时把第二个instance关掉。
jozosoft
2006-12-22
打赏
举报
回复
BCB搞不懂.
现在想了个其它办法:
一打开新程序,就让新程序自动把旧程序给关了.
嘿.
123
播放
器
V1.0
用纯WIN-API编
写
,有
播放
,暂停,停止,下一曲,上一曲,
打开
文件
,
双击
列表
播放
。相信对初学API编程的同仁有一定帮助。还有一版2.0是改进版
mp3
转exe
文件
可将
mp3
转为exe
文件
直接
播放
。无须其他操作。
win32迷你音乐
播放
器
该音乐
播放
器
使用win32进行开发,实现的功能有导入歌曲操作,使用列表框显示导入的所有音乐,
双击
音乐名字
播放
音乐,上一曲,下一曲,暂停,
播放
这些基本音乐
播放
操作
家庭多媒体
播放
器
.7z
家庭多媒体
播放
器
.7z
在pb中实现声音
文件
的
播放
介绍了如何在powerbuilder中实现声音
文件
播放
的方法。
GAME,图形处理/多媒体
1,184
社区成员
14,330
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章