现在我已经将我的程序和文件类型关联上了,但是我不知道怎么修改这种类型文件的默认图标。
我想是修改注册表,但是我不知道修改哪些键值?谢谢。

解决方案 »

  1.   

    //================= 设置应用程序相关联 ================
    procedure registerfiletype(ft,key,desc,icon,prg:string);
    //ft:文件名后缀,如可以为'.tst'或'afile.tst'
    //key:在注册表中的键值,要唯一
    //desc:关联程序的描述
    //icon:缺省的程序图标,如Application.ExeName+',1',可以缺省
    //prg:对应的应用程序
    var
      myreg : treginifile;
      ct : integer;
    begin
       // 取文件的后缀
       ct := pos('.',ft);
       while ct > 0 do begin
          delete(ft,ct,1);
          ct := pos('.',ft);
       end;   if (ft = '') or (prg = '') then
         exit; //判断后缀及应用程序是否有效
       ft := '.'+ft;
       myreg := treginifile.create('');
       try
         myreg.rootkey := hkey_classes_root; // 根应该为HKEY_CLASSES_ROOT
         if key = '' then
           key := copy(ft,2,maxint)+'_auto_file';
         // 如果没给出键值,则自动创建一个
         myreg.writestring(ft,'',key); // 写入描述的键值
         myreg.writestring(key,'',desc); // 写入描述
         if icon <> '' then
           myreg.writestring(key+'\DefaultIcon','',icon);
         // 写入缺省图标
         myreg.writestring(key+'\shell\open\command','',prg+' "%1"');
         //写入相关联的应用程序
       finally
         myreg.free;
       end;
    end;
      

  2.   

    调用例子:
    Example:
           registerFileType('.tst',
                            'testfile',
                            '测试关联文件',
                            Application.ExeName+',1',
                            Application.ExeName);
    原理说明:
        程序关联的键值放在注册表根为HKEY_CLASSES_ROOT下面。实现文件关联要写入两
    个键值:后缀键值和描述键值(可用术语用的不对)
        如实现将.tst与程序tstfile.exe相关联
        其中后缀键值形为:  .tst       myprogram
        key值为文件后缀,取值为对于key的一个描述
        描述键值形为:       myprogram 文件描述
        其中还有相应的子键,如缺省的程序图标,形为:
                             myprogram\DefaultIcon  '', 'tstfile.exe,1'
        打开命令,形为:
                             myprogram\shell\open\command '', 'tstfile.exe "%1"'
        写入完这两个键值后就可以实现文件与应用程序相关联了。
      

  3.   

    又没人回答了?
    因为我做了一个Flash播放器想和.swf文件关联,但是我不知道怎么修改注册表。哪位知道?
      

  4.   

    http://it.anhuinews.com/ahnews/article/20021205/20021200184310_1.html
    http://it.anhuinews.com/ahnews/article/20021205/20021200184317_1.htmlVB5 
        PW98 
        请问怎样才能能实现象ACDSEE、WIN ZIP那样,用户双击带有自己定义的后缀名的文件时,自动进入自己的软件并按格式打开该文件? 回答:     实际上ACDSee和WinZip都修改了系统注册表,所有关联信息都在HKEY_CLASS_ROOT键下。使用RegEdit可以看到这点。比如,ACDSee与GIF文件的关联。在HKEY_CLASS_ROOT\.gif下你可以看到默认值ACDC_GIF,再找到HKEY_CLASS_ROOT\ACDC_GIF,其默认值为ACDSee GIF Image。在这个键下有Shell\Open\Command,其值为"g:\WinTool\ACDSee95\ACDSee32.exe" /v。这就是调用ACDSee的命令行。只要在系统注册表中加上类似的几项就可以建立文件关联了。你可以先使用资源管理器建立新的文件关联,然后使用RegEdit将相关的几项输出到*.reg文件中,每次安装软件时执行regedit <filename>.reg就可以了。你也可以使用VB程序直接将这些信息写入用户的机器。关于在VB中读写系统注册簿,你可以参考QA000226 "如何访问Windows系统注册表"。 
        此外,你的程序必须支持命令行参数,因为Windows会把用户选择的文件名作为命令行参数传递给你的程序。VB的Command函数可以读取命令行参数(参考QA000595 "如何在VB中加入命令行参数")。这里有一个例子:associate.zip。 
         
        davis问:您好,我是一名VB爱好者,前不久我在您的网站上看到一篇关于文件关联的文章,对我受益很大,由此我又想到另外一个问题,就是当一个文件与应用程序相关连后,如何改变文件的默认图标(我想把它换成我自己的图标)? 
        答:还是以上面的GIF文件为例,在HKEY_CLASS_ROOT\ACDC_GIF下面建立一个新键DefaultIcon,修改它的默认值。如:I:\Program Files\Microsoft Visual Studio .NET\Vc7\vcpackages\VCProject.dll,-9。其中前面是DLL或EXE的全路径,逗号后面是图标在DLL或EXE中的资源号。