Delphi里实现文件格式关联应用程序的功能


本文整理自网络,侵删。

 
很多程序都有关联文件格式的机制,例如图片查看器都会将常见图片格式关联到自己的程序上,使用特定的图片查看器来打开。那么Delphi编程如何实现这个功能呢?看看关键代码如下:

uses System.IOUtils, Winapi.ShellAPI, Winapi.ShlObj;

// 关联后缀名的方法
procedure RegistryAppExt(const Ext, AppName, AppPath: string);
const
  nRegFmt = 'Windows Registry Editor Version 5.00' + sLineBreak + '[HKEY_CLASSES_ROOT\%0:s]' + sLineBreak + '@="%1:s"' +
    sLineBreak + '[HKEY_CLASSES_ROOT\%1:s\DefaultIcon]' + sLineBreak + '@="%2:s,0"' + sLineBreak +
    '[HKEY_CLASSES_ROOT\%1:s\shell]' + sLineBreak + '[HKEY_CLASSES_ROOT\%1:s\shell\open]' + sLineBreak +
    '[HKEY_CLASSES_ROOT\%1:s\shell\open\command]' + sLineBreak + '@="%3:s"';
var
  RegStr: string;
  str3, str4: string;
  RegTmpFile: string;
begin
  // 导入注册表
  str3 := StringReplace(AppPath, '\', '\\', [rfReplaceAll]);
  str4 := StringReplace(Format('"%s" "%%1"', [str3]), '"', '\"', [rfReplaceAll]);
  RegStr := Format(nRegFmt, [Ext, AppName, str3, str4]);
  RegTmpFile := TPath.GetTempPath + 'RegTmp.reg';
  with TStringList.Create do
  begin
    Text := RegStr;
    SaveToFile(RegTmpFile);
    Free;
  end;
  ShellExecute(0, nil, PChar(RegTmpFile), nil, nil, SW_SHOWNORMAL);
  // 刷新图标
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

// 调用方法
procedure TForm7.Button1Click(Sender: TObject);
begin
  RegistryAppExt('.delphi', 'MyApp', Application.ExeName);
end;

相关阅读 >>

Delphi utf8处理单元

Delphi中编写无输出函数名的dll文件

Delphi 获得指定进程的id号

Delphi想tstringgrid中添加和删除行的方法

Delphi tstringlist 保存txt文本文件最后一行不留空行

Delphi 获取电脑进程网络连接ip端口

Delphi wmi 获取网络信息

Delphi xe android/ios 实现图片放大缩小的两种方法

Delphi新建服务,停止系统服务,以及获取服务状态和新建系统服务器的方法

Delphi 判断当前活动窗口

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...