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