关于文件关联的问题! 现在我已经将我的程序和文件类型关联上了,但是我不知道怎么修改这种类型文件的默认图标。我想是修改注册表,但是我不知道修改哪些键值?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //================= 设置应用程序相关联 ================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; 调用例子: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"' 写入完这两个键值后就可以实现文件与应用程序相关联了。 又没人回答了?因为我做了一个Flash播放器想和.swf文件关联,但是我不知道怎么修改注册表。哪位知道? http://it.anhuinews.com/ahnews/article/20021205/20021200184310_1.htmlhttp://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中的资源号。 有什么学习DELPHI的书 如何把delphi功能界面与SQL数据库里的数据表打包在一起 sql模糊查找? 请教Delphi 中应用Excel 问题! 再次联合对日本进行最强攻击 求助登陆窗体的制作方法 如果机器上没有安装oracle客户端,delphi有什么方法连接oracle数据库吗? 啊!在线急!急!急!请各位帮帮忙! 如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口 很简单的问题,却找不出错在哪里 FieldDefs.Add的问题 再线强烈关注,各位请救命呀!非常急呀!
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;
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"'
写入完这两个键值后就可以实现文件与应用程序相关联了。
因为我做了一个Flash播放器想和.swf文件关联,但是我不知道怎么修改注册表。哪位知道?
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中的资源号。