2 qq 34174865 qq_34174865 于 2016.03.05 09:53 提问

双击文件,会把什么参数传给打开方式?怎么使用这些方式。

我想用c++写一个类似于记事本的功能。做到双击就可以打开自定义类型的文件。可是参数传不过去,根本打不开呀。

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 07:13
已采纳

双击文件,会把调用的文件作为argv[1]传递给程序。你可以写个最简单的小程序测试下。先看看你的注册表的设置对不对。

zuishikonghuan
zuishikonghuan   2016.03.06 08:16

假设你说的是Windows平台:这和文件关联有关,文件关联是如何定义的,系统就怎么传输,文件关联有2个,一个是hkey_classes_root,一个是local_user下的class,分别是全局和当前用户,如果你的程序申请了管理员权限,那么都可以修改,否则只能修改当前用户的。但是从w8开始(好像是吧)系统只是将上面两个关联当作参考,就算修改了,系统还可以从其他地方确定关联的程序,然后给你个通知:你新安装了一个可以打开xxx文件的应用,如何做?有你设置的关联,也有其他的可以打开文件应用。
废话了这么多,回到整体,用regedit演示下,在classroot下创建你的扩展名,比如.xyz,然后将其默认项修改为xyzfile,创建xzyfile,依次创建shell,open,command,然后设置为你的程序(空格)%1,然后呢的程序可以从命令行中取得文件路径。
上面都是手机手打,可能有错误,建议先搜索注册表用.txt之类的文件分析下

lx624909677
lx624909677   Ds   Rxr 2016.03.07 17:19

默认打开指定扩展名的文件,这个是写在注册表里固定的吧?好比用记事本打开一个.a的文件,第一次打开,选择记事本,然后选择始终用这种方式打开,这个时候是在注册表里做了记录的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!