请问如何为自定义的文件类型定义打开方式(修改注册表)???

robbyzi 2004-04-11 09:26:31
加精
例如,我做了一个软件,
并为该软件定义某种扩展名,如*.abc
那什么要如何做,才能够使到我双击*.abc的文件,它会自动启动该软件并打开。
谢了!!!
...全文
607 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesry 2004-07-27
  • 打赏
  • 举报
回复
想获得双击后的文件名,应该使用GetCommandLIne()函数获得命令行参数,然后分析字符串即可。
JetKingLau 2004-04-12
  • 打赏
  • 举报
回复
如果你的应用程序文件(或路径)包含空格,可以将
Reg->WriteString("", file+" " + "\"%1\"");//关联到应用程序

改为
Reg->WriteString("", AnsiString("\"")+file+"\" " + "\"%1\"");//关联到应用程序

JetKingLau 2004-04-12
  • 打赏
  • 举报
回复
CreateAssociateType(".abc", "FileTypeContent", "D:\\Temp\\abc.exe");




//---------------------------------------------------------------------------
void CreateAssociateType(AnsiString ext, AnsiString type, AnsiString file)
{
TRegistry *Reg = new TRegistry;
try {
Reg->RootKey = HKEY_CLASSES_ROOT;
if( Reg->OpenKey(AnsiString("\\") + ext, true) ) {
Reg->WriteString("", type);//注册文件类型
Reg->CloseKey();
}

Reg->RootKey = HKEY_CLASSES_ROOT;
if( Reg->OpenKey(AnsiString("\\")+type, true) ) {
Reg->WriteString("", type);//文件类型
Reg->CloseKey();
}

Reg->RootKey = HKEY_CLASSES_ROOT;
if( Reg->OpenKey(AnsiString("\\")+type+"\\shell\\open\\command", true) ) {
Reg->WriteString("", file+" " + "\"%1\"");//关联到应用程序
Reg->CloseKey();
}
}
__finally {
delete Reg;
}
}
//---------------------------------------------------------------------------
robbyzi 2004-04-12
  • 打赏
  • 举报
回复
偶用了时差兄的代码,
的确是启动了关联程序,
万分感谢。

但是,还存在一个问题,
就是程序启动了之后,它并没有打开我所双击的文件。
也就是说只启动但不运行。
偶知道在BCB的winmain中
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR , int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();

}
……

LPSTR是返回双击文件的路径,但是却不知道在Form中如何调用,
该变量是如何传递到Form中的????
RamjetZhang 2004-04-12
  • 打赏
  • 举报
回复
举例: txt文件后缀名.txt
所以:
HKEY_CLASSES_ROOT\.txt default value :txtfile;
说明,txt对应的是txtfile;
然后txtfile的默认shell verb: open的command是notepad.exe "%1", %1表示命令行第一个参数(即文件名);
HKEY_CLASSES_ROOT\txtfile\shell\open\command: %SystemRoot%\system32\NOTEPAD.EXE "%1"

(在.txt处直接写shell verb也可)
空中猎手 2004-04-11
  • 打赏
  • 举报
回复
注册表:
HKey_Current_user/software/Microsoft/Windows/Explorer/FileExts
Key_User/Software/Microsoft/Windows/Explorer/FileExts

里面看一看,可能是在这里改

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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