本文整理自网络,侵删。
很多程序都有关联文件格式的机制,例如图片查看器都会将常见图片格式关联到自己的程序上,使用特定的图片查看器来打开。那么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 tstringlist 保存txt文本文件最后一行不留空行
Delphi xe android/ios 实现图片放大缩小的两种方法
Delphi新建服务,停止系统服务,以及获取服务状态和新建系统服务器的方法
更多相关阅读请进入《Delphi》频道 >>