怎样自定义文件格式?
怎样自定义文件格式,且用自己写的程序才能读写,别人不能直接读写,比如用二进制流就不能读写等 !!!!1问
自己做的程序,其中有自定义的文件格式(.bsp),现在我在注册表里添加.bsp和我自己的程序相关联,可是每次我双击*.bsp文件(比如temp.bsp文件),这时打开了我的程序,可是却不能同时用我的程序打开temp.bsp文件,我应该在我的form1_load()里面加上怎样的代码?谢谢!
回答!!在注册表中应该设置为“你的程序全路径,%1“
2问 我自己写的数据。。该怎么保存到自己定义的一个文件格式的文件中。
用鼠标双击该文件能关联到我自己的程序
答案!关联文件需要修改注册表内容,参考一下方法:
自定义文件关联
在注册表里的HKEY_CLASSES_ROOT里见一个自己的类型。
如新建一个项.dyc 修改其默认键值为dycfiles
然后再新建一个项,再在其下新建一个项(shell),再在其下建项(open),再在其下建项(command),最后把command里的默认键值修改为你的程序。
这样就好了。
在bc里很简单。
#include <Registry.hpp>
TRegistry类里提供了足够的方法来做上面说的事。
下面子程序可以实现文件与程序关联:
//---------------------------------------------------------------------------
bool __stdcall RegFileType(AnsiString Ext, // 扩展名,如: ".dyc "
AnsiString ExtTypeName, // 文件类型,如: "dyc file "
AnsiString AppFileName, // 应用程序名,如 "c://dyc.exe "
AnsiString FileDescription, // 文件类型描述,如: "dyc documents "
int IconIndex) // 图标索引,如0
{
bool RegOK;
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+Ext, " ", ExtTypeName);
if(AppFileName.Pos( " ")> 0) {
AppFileName = "/ " "+AppFileName+ "/ " ";
}
if(RegOK) {
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+ExtTypeName, " ", FileDescription);
}
if(RegOK) {
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+ExtTypeName+ "//DefaultIcon ", " ", AppFileName+ ", "+IntToStr(IconIndex));
}
if(RegOK) {
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+ExtTypeName+ "//Shell//打开//command ", " ", AppFileName+ " / "%1/ " ");
}
return RegOK;
}
bool __stdcall WriteStringToReg(HKEY Root, AnsiString Key, AnsiString KeyName, AnsiString KeyValue) {
bool OK = false;
TRegistry *Registry = new TRegistry();
Registry-> RootKey = Root;
if(Registry-> OpenKey(Key, true)) {
try {
Registry-> WriteString(KeyName, KeyValue);
OK = true;
}
catch(...) {
}
}
delete Registry;
return OK;
}
注册表结构:
[HKEY_CLASSES_ROOT/.myfile] <=== 此为加入的文件类型
@= "ft000003 "
------------------------------------------
[HKEY_CLASSES_ROOT/ft000003] <=== 以下关联方式
"EditFlags "=dword:00000000
"BrowserFlags "=dword:00000008
@= " "
[HKEY_CLASSES_ROOT/ft000003/DefaultIcon] <=== 默认图标
@= "shell32.dll,44 "
[HKEY_CLASSES_ROOT/ft000003/shell] <=== 打开方式
@= "open "
[HKEY_CLASSES_ROOT/ft000003/shell/open]
[HKEY_CLASSES_ROOT/ft000003/shell/open/command] <=== 关联程序
@= "F://Exe//Setup//Set.EXE %1 "
------------------------------------------------------------------------------------------------------------------本文转自百度空间