社区
GAME,图形处理/多媒体
帖子详情
自己写了个播放器,要求双击MP3文件后, 只允许打开一个应用程序来播放
jozosoft
2006-12-22 08:44:02
自己写了个播放器,现在有处问题不好解决:
双击MP3文件后,我要求调用我的程序来放,可以实现。但是,每双击一个文件,系统就打开一个新的播放器,这当然是不允许的。
1、同一时刻只允许打开一个应用程序我会,但是,当第二个应用程序打开后,如果让它把mp3文件名传递给第一次打开的程序?
2、(此问题能解决一下更好) 如果让程序支持更多的音乐格式?如:rm之类。
谢谢!
...全文
189
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搞不懂.
现在想了个其它办法:
一打开新程序,就让新程序自动把旧程序给关了.
嘿.
计算机应用技术(实用手册)
让默认的就可以了,但是超频玩者是肯定不会放过任何可以提高性能的东西的,所以如果你想在这里让你的电脑提升一点性能的话,就必须慢慢试验,选择
一个
适当的参数才能让你的计算机达到性能和稳定的最佳状态!...
多媒体教室
单击第
一个
按钮,将会出现供您选择的
文件
或
文件
夹。 选择要提交的
文件
后,任务栏中将会出现您要提交的
文件
。 单击第二个按钮,则供您选择的将是
文件
夹。 单击第四个按钮,则您选择的
文件
或
文件
夹将会被提交到教师机...
delphi 开发经验技巧宝典源码
0237 如何实现
一个
应用程序
只能
打开
一个
进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取
一个
字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...
JAVA上百实例源码以及开源项目
6个目标
文件
,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每
一个
EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
JAVA上百实例源码以及开源项目源代码
6个目标
文件
,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每
一个
EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
GAME,图形处理/多媒体
1,183
社区成员
14,336
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章