查注册表吧。
查HKEY_CLASS_ROOT\.XXX读默认下的字符串string,
查HKEY_CLASS_ROOT\[string]\shell\[第一项]\command下的默认下的字符串就是启动路径

解决方案 »

  1.   

    回答你的问题:
    1>首先建立两个列表:
    >>>>用来存放你要打开的文件类型;;可用字符串;(有效信息为:文件路径名和文件名);
    >>>>用来打开这个文件的程序:::也可用字符串;(有效信息为程序的路径和名称);
    2>定位要打开的文件:
       查找类型,定位;搜索对应的程序;
    3>按你的要求打开!
       方式:system(程序路径名+名称,文件路径名+名称)如有问题,请与我联系!
    [email protected]
          
      

  2.   

    回答你的问题:
    1>首先建立两个列表:
    >>>>用来存放你要打开的文件类型;;可用字符串;(有效信息为:文件路径名和文件名);
    >>>>用来打开这个文件的程序:::也可用字符串;(有效信息为程序的路径和名称);
    2>定位要打开的文件:
       查找类型,定位;搜索对应的程序;
    3>按你的要求打开!
       方式:system(程序路径名+名称,文件路径名+名称)如有问题,请与我联系!
    [email protected]
          
      

  3.   

    看看 MFC 类库的源代码吧!注册文件类型的代码在 DOCMGR.CPP,查找
    void CDocManager::RegisterShellFileTypes(BOOL bCompat)
    即可,它是入口。
      

  4.   


        靠,难道用ShellExecute不好吗?????
      

  5.   

    设你的应用程序为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;
    }
      

  6.   

    噢sunlet. 你没明白我的意思。 我不是想让我自己的文档可以缺省被我的程序打开,而是我想在程序中打开别的文件,例如打开一个doc文件,当我执行这段代码以后,能够启动word去打开它。 嘻不过, 我会给你加很多分的。嘻....你现在过得好吗?