从别的站点转载的,并不是直接解决。不过也应该可以触类旁通吧。编程实现文件关联(2000年8月21日) 作者:srw文件关联的目的是要实现某种扩展名的文件由相应的应用程序
来打开,对于编写的应用软件来说,由于一般都有设计者特定的扩
展名的数据文件,软件编制者应在程序中实现自动关联而不能由用
户手工去实现。下面给出实现文件关联的实用程序。----实现文件关联的核心是对注册表的操作,所有的文件关联都在
HKEY-CLASSES-ROOT下面,要实现文件关联必须在HKEY-
CLASSES-ROOT中增加两个键值,一是和文件扩展名对应的类型说
明,二是对这种类型文件的操作所需要执行的应用程序。下面举例
说明,本例实现将扩展名为.xyz的文件定义为"我自己的文件"类
型,双击此种类型的文件时执行的打开功能使用记事簿程序。实现
这一功能需要用到Delphi中的函数RegCreateKey、RegSetValue。实
现如下:----在窗体中放置一个按钮,双击按钮写如下代码:procedureTForm1.Button1Click(Sender:TObject);
var
lphKey:HKEY;
sKeyName:string;
sKeyValue:string;
begin
sKeyName:=′myfile′;
sKeyValue:=′我的文档′;
RegCreateKey(HKEY-CLASSES-ROOT,
pchar(sKeyName),lphKey);
RegSetValue(lphKey,′′,REG-SZ,
pchar(sKeyValue),0);
sKeyName:=′.xyz′;
sKeyValue:=′myfile′;
RegCreateKey(HKEY-CLASSES-ROOT,
pchar(sKeyName),lphKey);
RegSetValue(lphKey,′′,REG-SZ,
pchar(sKeyValue),0);
sKeyName:=′myfile′;
sKeyValue:=′c:\Windows\NotePad.exe%1′;
RegCreateKey(HKEY-CLASSES-ROOT,
pchar(sKeyName),lphKey);
RegSetValue(lphKey,′shell\open\command′,REG-SZ,
pchar(sKeyValue),MAX-PATH);
end;----建立一新文件,使其扩展名为.xyz,然后双击它看是否是启动
记事簿来打开的。
来打开,对于编写的应用软件来说,由于一般都有设计者特定的扩
展名的数据文件,软件编制者应在程序中实现自动关联而不能由用
户手工去实现。下面给出实现文件关联的实用程序。----实现文件关联的核心是对注册表的操作,所有的文件关联都在
HKEY-CLASSES-ROOT下面,要实现文件关联必须在HKEY-
CLASSES-ROOT中增加两个键值,一是和文件扩展名对应的类型说
明,二是对这种类型文件的操作所需要执行的应用程序。下面举例
说明,本例实现将扩展名为.xyz的文件定义为"我自己的文件"类
型,双击此种类型的文件时执行的打开功能使用记事簿程序。实现
这一功能需要用到Delphi中的函数RegCreateKey、RegSetValue。实
现如下:----在窗体中放置一个按钮,双击按钮写如下代码:procedureTForm1.Button1Click(Sender:TObject);
var
lphKey:HKEY;
sKeyName:string;
sKeyValue:string;
begin
sKeyName:=′myfile′;
sKeyValue:=′我的文档′;
RegCreateKey(HKEY-CLASSES-ROOT,
pchar(sKeyName),lphKey);
RegSetValue(lphKey,′′,REG-SZ,
pchar(sKeyValue),0);
sKeyName:=′.xyz′;
sKeyValue:=′myfile′;
RegCreateKey(HKEY-CLASSES-ROOT,
pchar(sKeyName),lphKey);
RegSetValue(lphKey,′′,REG-SZ,
pchar(sKeyValue),0);
sKeyName:=′myfile′;
sKeyValue:=′c:\Windows\NotePad.exe%1′;
RegCreateKey(HKEY-CLASSES-ROOT,
pchar(sKeyName),lphKey);
RegSetValue(lphKey,′shell\open\command′,REG-SZ,
pchar(sKeyValue),MAX-PATH);
end;----建立一新文件,使其扩展名为.xyz,然后双击它看是否是启动
记事簿来打开的。
解决方案 »
- 紧急求救:Delphi7如何实现在自己开发的窗体中播放PPT(Office2007)?
- lea内嵌汇编问题
- 请问如何获得当前应用程序的标题名啊?
- BCB5 安装DevExpress.QuantumGrid.Suite.v5缺少DBReg.dcu???
- 问个简单问题!
- 哪个网站可以在线看足球
- 那里可以下载DCOM FOR 9X?
- 为什么CSDN要扣我的专家分???我本来是2020的,今天怎么变成了1975了。。。。。
- 各位大G大J:怎样用程序遍历局域网中的各个工作站并取得它们的IP地址?
- delphi热键提示找不到窗体
- 我在的Delphi5.0安装控件时,先出现错误.安装不了控件
- 如果您是陈盈豪,那就小Kiss了???(500分)
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil);
用sendmessage,postmessage也可以。呵呵,又拿了N分。
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);
用sendmessage,postmessage也可以。呵呵,又拿了N分。