某类文件的“打开方式”??

专制的网站 2012-03-21 11:07:04
情景:
一个程序,枚举某处所有文件,然后显示在ListView上。并且,在右击某个选中的项时,能出现文件的 打开方式 列表,如下图红框处的效果:


问题:
1、如何获取 上面 红框处的列表信息?(即 某类文件 的 推荐打开方式列表)
2、当我获取到上面列表的信息,并把它们添加到 我自己的右键菜单 中 。然后,如何能做到 :点击我的右键菜单选项,能以选中的 "打开方式" 来打开文件??

求指点啊求指教~~
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuanfeng007 2012-03-22
  • 打赏
  • 举报
回复
建议注册表中搜素下 OpenWithList , 在其他地方也有.txt的OpenWithList.楼主看到的只是一部分,注册表其他地方也许还有.txt的 OpenWithList键。

本人按照以下方法:

添加“打开方式”二级菜单
如,给txt文件添加打开方式“推荐程序”VC6.0:
展开 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\. txt,
①选择OpenWithList键,右击右栏空白处,新建/字符串:键名“d”;
②双击d 键,输入值MSDEV.EXE,确定;
③双击MRUList键,在值bac后加入d,确定。

关闭注册表后,右键打开txt,的确是有VC6.0的打开选项。

说明这个OpenWithList是有用处的。 楼主的说不对应,有可能你看到的只是一部分,注册表其他地方应该还有。总的叠加起来,就形成了你看到的右键菜单。建议搜素注册表,再仔细分析下。
专制的网站 2012-03-22
  • 打赏
  • 举报
回复
对于问题1 ,网上的资料:
1)、HKEY_CLASSES_ROOT\.txt ==> HKEY_CLASSES_ROOT\txtfile
2)、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt的 OpenWithList

他们的内容都和 红框处的 不对应啊...~~ 求指点~~!!
专制的网站 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxyppc 的回复:]
注册表是个筐,啥都能往里装
[/Quote]
感觉 第一个问题 应该是在注册表,就是不知道具体位置...
第二个问题,就想不出来怎么弄了
lxyppc 2012-03-21
  • 打赏
  • 举报
回复
注册表是个筐,啥都能往里装
专制的网站 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenkuan9zl 的回复:]
你去查查createprocess这个函数的第二个参数就明白怎么做了,你的文件名当做参数传给程序程序就能打开你的文件 比如123.txt 你双击它 他把123文件名传给记事本 打开的就是这个文件了[/Quote]
=.=
chenkuan9zl 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 okmnjizc 的回复:]

引用 3 楼 chenkuan9zl 的回复:
第二个问题 读出列表后动态添加到你的列表里,接着在处理历程里用 CreateProcess 传递打开所指定的程序名和用户选中的文件名 (传给第二个参数)

引用 4 楼 oyljerry 的回复:
2.获得应用程序后,可以自己直接ShellExecute来打开

真的是只要传值就行了... 想多了 ,以为要shell 什么的...

……
[/Quote]
你去查查createprocess这个函数的第二个参数就明白怎么做了,你的文件名当做参数传给程序程序就能打开你的文件 比如123.txt 你双击它 他把123文件名传给记事本 打开的就是这个文件了
专制的网站 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenkuan9zl 的回复:]
第二个问题 读出列表后动态添加到你的列表里,接着在处理历程里用 CreateProcess 传递打开所指定的程序名和用户选中的文件名 (传给第二个参数)
[/Quote]
[Quote=引用 4 楼 oyljerry 的回复:]
2.获得应用程序后,可以自己直接ShellExecute来打开
[/Quote]
真的是只要传值就行了... 想多了 ,以为要shell 什么的...



[Quote=引用 4 楼 oyljerry 的回复:]
HKEY_CLASSES_ROOT\.txt
[/Quote]
我这个机这里不对啊,没看到需要的信息
oyljerry 2012-03-21
  • 打赏
  • 举报
回复
HKEY_CLASSES_ROOT\.txt

2.获得应用程序后,可以自己直接ShellExecute来打开
chenkuan9zl 2012-03-21
  • 打赏
  • 举报
回复
第一个问题肯定能用注册表解决具体位置我也不记得了,之前我弄过
第二个问题 读出列表后动态添加到你的列表里,接着在处理历程里用 CreateProcess 传递打开所指定的程序名和用户选中的文件名 (传给第二个参数)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧