请问如何实现文件的关联,类似WINDOWS的资源管理器,双击文件就可以打开相应的程序读取文件300分(300分)

  • 主题发起人 主题发起人 tianq
  • 开始时间 开始时间
T

tianq

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何实现文件的关联,类似WINDOWS的资源管理器,双击文件就可以打开相应的程序读取文件300分
在delphi 中使用shellexecute打开文件文件当然是可以,但是不可能在程序中都指定需要打开应用程序,如何实现自动的打开应用程序和文档进行联结,请多多指教
 

http://www.2ccc.com/
下一个胜天进销存源码里面有
 
procedure registerfiletype(ft,key,desc,icon,prg:string);
var myreg : treginifile;
ct : integer;
begin

// make a correct file-extension
ct := pos('.',ft);
while ct > 0 do begin
delete(ft,ct,1);
ct := pos('.',ft);
end;
if (ft = '') or (prg = '') then exit; //not a valid file-ext or ass. app
ft := '.'+ft;
try
myreg := treginifile.create('');
myreg.rootkey := hkey_classes_root; // where all file-types are described
if key = '' then key := copy(ft,2,maxint)+'_auto_file'; // if no key-name is given,
// create one
myreg.writestring(ft,'',key); // set a pointer to the description-key
myreg.writestring(key,'',desc); // write the description
if icon <> '' then
myreg.writestring(key+'/DefaultIcon','',icon); // write the def-icon if given
myreg.writestring(key+'/shell/open/command','',prg+' %1'); //association
finally
myreg.free;
end;
showmessage('File-Type '+ft+' associated with'#13#10+
prg+#13#10);
end;
 
我用ExecuteFile基本解决了问题,虽然有时打开文件时出错,
蒋劲刚,你能具体给我讲讲你的代码的含义吗
myreg := treginifile.create('');
myreg.rootkey := hkey_classes_root; // where all file-types are described
if key = '' then key := copy(ft,2,maxint)+'_auto_file'; // if no key-name is given,
// create one
myreg.writestring(ft,'',key); // set a pointer to the description-key
myreg.writestring(key,'',desc); // write the description
if icon <> '' then
myreg.writestring(key+'/DefaultIcon','',icon); // write the def-icon if given
myreg.writestring(key+'/shell/open/command','',prg+' %1'); //association
finally
myreg.free;
我、看不明白如何用你的代码打开一个文件,并且准确的建立文件关联
还是非常感谢,稍后我在把分分给大家
 
首先ShellExecute不仅可以启动应用程序,而且可以启动已注册的关联程序。
譬如,ShellExecute(0, 'edit', 'my.txt', nil, nil, SW_SHOW);
就相当于你在资源管理器里右键单击'my.txt',选择‘编辑’。
其他就依此类推。
ShellExecute(0, 'open', 'my.txt', nil, nil, SW_SHOW);
就相当与双击my。txt
 
我理解你的意思错了。我的这段程序是用来将一种文件类型与一个应用程序相关联的
这样,在用SHELLEXEC时就可以用这个应用程序来打开这种文件了
 
蒋劲刚你好
你的代码很有用可否解释一下,小弟才疏学浅
 
就是在注册表中用程序来加入一种新的文件类型呀,FT是扩展名,PRG是要关联的程序名
 
有不少文件从注册表中是无法找到相关的打开程序的,但事实上在Windows中双击是可以调用相关程序打开的。这里建议使用ShellExcute,可以简单有效的实现楼主的功能。
 
蒋兄的方法是在系统中注册一种新的文件类型,比如*.doc如果没有安装Word,那么*.doc系统就没有识别,安装了word,在系统中就注册了doc这种文件类型,相应的功能就有了。
 
非常感谢,兄弟获益非浅
 
作者: Philip Hofstetter.
如何注册文件类型,如何在文件类型上下文菜单(资源管理器)增加
项目,如何在Win95/NT 新建菜单下增加项目
http://www.csdn.net/dev/delphi/Samples/regtype.zip
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
874
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部