关于文件的双击打开,软件本来好像已经做过了,但是好像一直以来都没有起到很好的作用。文件关联一定是做了,因为双击能打开软件,而打开了软件并没有打开对应的文件。而且在软件安装后只能重启之后才能使关联的文件才能有对应的图标,当然这样看似破烂的工作又安排到了我的身上了。
经过一番研究什么时候不能打开文件呢?一般是有空格的的情况,最后发现时一个dll出的问题,所以把dll中的程序调整了以后就没什么问题了。当然我自己调试的时候是通过修改文件的默认打开项来实现文件关联的,因为用的不是安装文件,只是自己的调试程序。本来觉得已经完事了,没想到等同事把安装文件做好后还是有问题,问题同样的出现。所以自己不得不自己也安装了一份程序来试验,把自己的调试exe覆盖掉软件中的exe来通过showmessage不断调试show出来自己想要的结果。同事一直认为我的ParamStr(1)得到的路径是错误的。
我明明觉得好好的为什么是错误的呢?经过调试得出来的路径果然是出乎意料的,因为桌面上得到的文件的路径类似于“C:\Docume~1\Admini~1\...”这样的路径,由于自己对文件系统的一些了解很明显的知道这得到的是文件的短文件形式,当然这样也可以直接打开文件,但是软件中有一些分析路径的过程是按照预想长文件名格式来的,所以会失败。然而如果是在文件路径中没有空格的路径中得到的就是长文件名的形式的,并能正确打开。
这样倒是也有办法就是通过GetLongPathName把短文件名转换成长文件名,但是觉得这样很蹩脚。难道真的是必须这样吗?那操作系统也太有问题了吧!所以不如自己试验了一下文件关联,在网上找了段代码,自己修改了一下:
// 注册文件关联
// ExeName: 要检测的扩展名(例如: .txt)
// AppName: 要关联的应用程序名(例如: C:\StarTask\StarTask.exe)
// AppKey: ExeName扩展名在注册表中的键值(例如: txtfile)
// Icon: 扩展名为ExeName的图标文件(例如: C:\StarTask\Task.ico)
// Describe: 文件类型描述
RegisterFileRelation(ExtName, AppName,AppKey,Icon, Describe:string):boolean;
var
Reg : TRegistry;
begin
try
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(ExtName,true);
Reg.WriteString('',AppKey);
Reg.CloseKey;
Reg.OpenKey(AppKey,true);
Reg.WriteString('',Describe);
Reg.CloseKey;
Reg.OpenKey(AppKey + '\DefaultIcon',true);
Reg.WriteString('',Icon );
Reg.CloseKey;
Reg.OpenKey(AppKey + '\Shell',true);
Reg.WriteString('','Open' );
Reg.CloseKey;
Reg.OpenKey(AppKey + '\Shell\Open\Command',true);
Reg.WriteString('',AppName + ' "%1"');
Reg.CloseKey;
reg.free;
Result := True;
except
Reg.Free;
Result := false;
end;
end;
通过自己调试通过了,在路径中有空格的情况下得到的文件路径也是长文件名形式的,所以我觉得还是应该是同事在文件关联的地方出了问题,最后硬要来代码仔细观察了以后发现‘ %1’的问题, 在delphi中 ‘ %1’ 写成 ' "%1"'这种形式的话在得到文件的路径的时候才不会因为空格什么出问题。
上面的那段代码,是在http://hi.baidu.com/piaoliuxia/blog/item/924bae22cafd55fbd6cae271.html这篇博客中得到的,修改了一点内容。同时也在这篇博客里找到了SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); (uses ShlObj)这样一个方法可以轻松的实现在文件关联后立刻更新文件图标等内容。
分享到:
相关推荐
apache-jmeter-5.6.3 带插件
内置源程序供读者参考学习
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
MATLAB设计的图像去雾设计(GUI界面设计)
2023年江苏省计算机二级考试VB试题分类汇总及答案.pdf
Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4
2023年微型计算机原理试题库及答案.pdf
美联储在2024年9月18日宣布将其调50个基点,降至4.75%至5.00%之间的水平。这是美联储自2020年3月以来首次降息,也是自2023年7月将利率水平调升至历史高位后的首次下调,标志着货币政策由紧缩周期向宽松周期的转向 数据名称:美国联邦基金有效利率、目标利率历史数据 样本数量:12667条 数据年份:1990.1-2024.9 数据说明:包括有效利率、目标利率 更新日期:2024年9月
2023年专升本计算机基础习题答案.pdf
ava项目springboot基于springboot的课程设计,包含源码+数据库+毕业论文
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
【工程项目】MATLAB教室人数统计(GUI框架,定位和分割人脸,计数)
2023年山东专升本计算机真题及答案.pdf
2023年计算机与通信网络实验报告.pdf
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4
Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)
英飞凌TC264代码-uart