如何关联文件

gyj_china 2003-08-21 03:53:09
我以前写了一个播放器,最近翻出来改了一下,我想知道在注册表中是如何关联的,我想双击.MP3文件就用我的播放器打开.请问怎么办啊?
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsys2 2003-08-31
  • 打赏
  • 举报
回复
你应该把分都给xuv2002(XuWei),都是他做的
pengweibo 2003-08-22
  • 打赏
  • 举报
回复
学习!
xuv2002 2003-08-21
  • 打赏
  • 举报
回复
char buf [255]; memset(buf,0,255);
char * space;
strcpy(buf, GetCommandLine());
//GetCommandLine 得到整个命令行,包括执行文件名+参数
//其格式类似下面的例子
// \"c:\\xx目录\\xx.exe\" c:\\xx.文件"

space = strchr(buf+1, '\"');
if (!space || space[1]=='\0') space = strchr(buf+1, ' ');
if (space){
for(space+=1; *space==' '; space++) ;
//space 就是 在注册表里面写的%1 带入的参数了
}
gyj_china 2003-08-21
  • 打赏
  • 举报
回复
我试一下,如果行就五五分帐。
xuv2002 2003-08-21
  • 打赏
  • 举报
回复
啊哈
偶来了

这样写是关联起来了
不过你的播放器程序也必须有 提取 参数 的方法才行

分全给我么? 随便楼主了,还是 5 5 分帐吧:P
netsys2 2003-08-21
  • 打赏
  • 举报
回复
这是xuv2002(XuWei)的东西,他如果来了,分全给他


写注册表,提供个函数给你吧
bool RegisterExt(const char* ext, const char* desc, const char* exe)
{
if (!ext || !ext[0] || !desc || !desc[0] || !exe || !exe[0]) return false;
char buf [255] ;
memset(buf,0,255);
strncpy(buf, exe, 3); buf[3] = '\0';
TRegistry * Reg=new TRegistry();
Reg->RootKey=HKEY_CLASSES_ROOT;
Reg->OpenKey(ext,true);
Reg->WriteString("",desc);
Reg->CloseKey();
AnsiString Desc = desc;
if(!Reg->OpenKey(Desc+"\\DefaultIcon",true)){
Reg->CloseKey(); delete Reg; return false;
}
sprintf(buf,"%s,0",exe);
Reg->WriteString("",buf);
Reg->CloseKey();
if(!Reg->OpenKey(Desc+"\\Shell\\Open\\Command",true)){
Reg->CloseKey(); delete Reg; return false;
}
sprintf(buf,"%s %%1",exe);
Reg->WriteString("",buf);
Reg->CloseKey();
delete Reg; return true;
}


调用示例:
RegisterExt(".dat","DAT files","D:\\program files\\ultraedit\\Uedit32.exe");

将.dat 类型得文件跟ultraedit关联起来
第一个参数是类型名称,第二个参数是类型描述,第三个是执行文件名称


1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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