获取文档关联的应用程序的命令行

本文介绍如何使用Windows注册表来查询特定文件扩展名所关联的应用程序。通过读取HKEY_CLASSES_ROOT分支下的键值,可以获取到打开指定类型文件所需的命令行路径。
文件的应用程序关联储存在Windows的注册表中。要获取此信息我们先要找回文件扩展名所在处的“Class”。这些信息可在此获得:

HKEY_CLASSES_ROOT\.ext\(default)

这里的".ext"就是你想找的文件的扩展名(如".txt", ".bmp"等)。接着我们可获取打开该类文件的命令行,可在此下获得有关数据:

HKEY_CLASSES_ROOT\class\Shell\Open\Command\(default)

"class"是按扩展名分类的文件分类,该字符串常以以下格式书写

"D:\PATH\APPNAME.EXT" "%1" -OPTIONS

%1即表示用指定应用程序打开文档,所以我们应该找到此字符串的位置并改成我们想替换成的文件名。

例子:
-------

这个函数将返回打开某个文档关联的命令行:

function GetAssociation(const DocFileName: string): string;
var
FileClass: string;
Reg: TRegistry;
begin
Result := '';
Reg := TRegistry.Create(KEY_EXECUTE);
Reg.RootKey := HKEY_CLASSES_ROOT;
FileClass := '';
if Reg.OpenKeyReadOnly(ExtractFileExt(DocFileName)) then
begin
FileClass := Reg.ReadString('');
Reg.CloseKey;
end;
if FileClass <> '' then begin
if Reg.OpenKeyReadOnly(FileClass + '\Shell\Open\Command') then
begin
Result := Reg.ReadString('');
Reg.CloseKey;
end;
end;
Reg.Free;
end;

转载于:https://www.cnblogs.com/myamanda/articles/1597569.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值