如何? 查注册表吧。查HKEY_CLASS_ROOT\.XXX读默认下的字符串string,查HKEY_CLASS_ROOT\[string]\shell\[第一项]\command下的默认下的字符串就是启动路径 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回答你的问题:1>首先建立两个列表:>>>>用来存放你要打开的文件类型;;可用字符串;(有效信息为:文件路径名和文件名);>>>>用来打开这个文件的程序:::也可用字符串;(有效信息为程序的路径和名称);2>定位要打开的文件: 查找类型,定位;搜索对应的程序;3>按你的要求打开! 方式:system(程序路径名+名称,文件路径名+名称)如有问题,请与我联系![email protected] 回答你的问题:1>首先建立两个列表:>>>>用来存放你要打开的文件类型;;可用字符串;(有效信息为:文件路径名和文件名);>>>>用来打开这个文件的程序:::也可用字符串;(有效信息为程序的路径和名称);2>定位要打开的文件: 查找类型,定位;搜索对应的程序;3>按你的要求打开! 方式:system(程序路径名+名称,文件路径名+名称)如有问题,请与我联系![email protected] 看看 MFC 类库的源代码吧!注册文件类型的代码在 DOCMGR.CPP,查找void CDocManager::RegisterShellFileTypes(BOOL bCompat)即可,它是入口。 靠,难道用ShellExecute不好吗????? 设你的应用程序为c:\abc.exe在你的应用程序中加入以下两个函数,stol为类型转换函数,reg为文件类型注册函数,执行它,然后重新启动,所有的.abc文件图标全部变为c:\abc.exe的图标,并且双击.abc默认使用abc.exe打开,但你还需要增加对命令行的参数的处理才能进行打开后的进一步操作.我在VC6+WIN98中使用通过无误,如有问题欢迎联系:[email protected] CLj1Dlg::reg(char p[]) //文件注册函数,p在这里为加点扩展名".abc"{//创建入口 HKEY hKEY; LPBYTE set; DWORD type_1; int cbData_1; CString s=p,s1; s.Delete(0); //在WINDOWS中注册.abc s+="file"; ::RegCreateKey(HKEY_CLASSES_ROOT,p,&hKEY);//建立子键 set=stol(s); //使用自定义函数将CString型转换为LPBYTE方可写入 type_1=REG_SZ;//指定写入数据的类型为字符串 cbData_1=s.GetLength(); ::RegSetValueEx(hKEY,"", NULL,type_1,set,cbData_1); //将.abc的图标改为abc.exe的图标 s1=s; s1+="\\DefaultIcon"; set=stol("c:\\abc.exe");//设你的abc.exe在C盘根目录下 ::RegCreateKey(HKEY_CLASSES_ROOT,s1,&hKEY); // 建立入口 ::RegSetValueEx(hKEY,"",NULL,type_1,set,11); //向入口写入数据 //设置.abc的打开文件为c:\abc.exe s1=s; s1+="\\shell\\open\\command"; set=stol("c:\\abc.exe %1"); ::RegCreateKey(HKEY_CLASSES_ROOT,s1,&hKEY); ::RegSetValueEx(hKEY,"",NULL,type_1,set,11);}LPBYTE CLj1Dlg::stol(CString s)//类型转换函数{ char ch1=0; int i; LPBYTE lpb=new BYTE[s.GetLength()+1]; for(i=0;i<s.GetLength();i++) {lpb[i]=s[i];}lpb[i]=ch1; return lpb;} 噢sunlet. 你没明白我的意思。 我不是想让我自己的文档可以缺省被我的程序打开,而是我想在程序中打开别的文件,例如打开一个doc文件,当我执行这段代码以后,能够启动word去打开它。 嘻不过, 我会给你加很多分的。嘻....你现在过得好吗? 有关ACE的问题,请高手指教 vc6.0的C++目录中如何设置包含头文件的顺序 listcontrl问题,高分酬谢 急问! 如何自动关闭一个窗口 急寻一个SGIP(0213修订版)的API接口(500分)。 `````````````up有分``````````````怎样在托盘区显示状态? 有一个char型数组,要取它的连续子集放到另一个数组,最好的做法是什么? 100分 请问如何在一个对话筐里,通知另一个对话框执行控件命令? 菜鸟求助:怎样在文档里动态显示位图? VC输出报告怎样可写入Excel AnimateWindow,为何不能使用? 如何编写DLL
1>首先建立两个列表:
>>>>用来存放你要打开的文件类型;;可用字符串;(有效信息为:文件路径名和文件名);
>>>>用来打开这个文件的程序:::也可用字符串;(有效信息为程序的路径和名称);
2>定位要打开的文件:
查找类型,定位;搜索对应的程序;
3>按你的要求打开!
方式:system(程序路径名+名称,文件路径名+名称)如有问题,请与我联系!
[email protected]
1>首先建立两个列表:
>>>>用来存放你要打开的文件类型;;可用字符串;(有效信息为:文件路径名和文件名);
>>>>用来打开这个文件的程序:::也可用字符串;(有效信息为程序的路径和名称);
2>定位要打开的文件:
查找类型,定位;搜索对应的程序;
3>按你的要求打开!
方式:system(程序路径名+名称,文件路径名+名称)如有问题,请与我联系!
[email protected]
void CDocManager::RegisterShellFileTypes(BOOL bCompat)
即可,它是入口。
靠,难道用ShellExecute不好吗?????
在你的应用程序中加入以下两个函数,stol为类型转换函数,reg为文件类型注册函数,执行它,然后重新启动,所有的.abc文件图标全部变为c:\abc.exe的图标,并且双击.abc默认使用abc.exe打开,但你还需要增加对命令行的参数的处理才能进行打开后的进一步操作.
我在VC6+WIN98中使用通过无误,如有问题欢迎联系:[email protected] CLj1Dlg::reg(char p[]) //文件注册函数,p在这里为加点扩展名".abc"
{
//创建入口 HKEY hKEY;
LPBYTE set;
DWORD type_1;
int cbData_1; CString s=p,s1; s.Delete(0);
//在WINDOWS中注册.abc
s+="file";
::RegCreateKey(HKEY_CLASSES_ROOT,p,&hKEY);//建立子键
set=stol(s); //使用自定义函数将CString型转换为LPBYTE方可写入
type_1=REG_SZ;//指定写入数据的类型为字符串
cbData_1=s.GetLength();
::RegSetValueEx(hKEY,"", NULL,type_1,set,cbData_1);
//将.abc的图标改为abc.exe的图标
s1=s;
s1+="\\DefaultIcon";
set=stol("c:\\abc.exe");//设你的abc.exe在C盘根目录下
::RegCreateKey(HKEY_CLASSES_ROOT,s1,&hKEY); // 建立入口
::RegSetValueEx(hKEY,"",NULL,type_1,set,11); //向入口写入数据
//设置.abc的打开文件为c:\abc.exe
s1=s;
s1+="\\shell\\open\\command";
set=stol("c:\\abc.exe %1");
::RegCreateKey(HKEY_CLASSES_ROOT,s1,&hKEY);
::RegSetValueEx(hKEY,"",NULL,type_1,set,11);}LPBYTE CLj1Dlg::stol(CString s)//类型转换函数
{
char ch1=0;
int i; LPBYTE lpb=new BYTE[s.GetLength()+1];
for(i=0;i<s.GetLength();i++)
{lpb[i]=s[i];}
lpb[i]=ch1;
return lpb;
}