在 Windows 选中文件/文件夹后如何添加右键菜单,能传递选中的全部文件名到我的程序?

2018-05-01 03:14:50 +08:00
 konecos

目前的情况是:

选中单个文件后传递选中的文件名到我的程序

选中多个文件后运行多个程序并每个程序附带一个文件名参数

选中文件夹后无这个菜单选项

选中文件与文件夹后无这个菜单选项

如何实现

一次性传递多个文件 /文件夹名单个我的程序

单个文件 /文件夹的话不显示菜单选项

2023 次点击
所在节点    问与答
8 条回复
geelaw
2018-05-01 03:49:51 +08:00
我建议你购买微软的开发者技术支持,499 USD 一个问题,或者 1999 USD 五个问题。

简单的搜索就能有答案,你真的不会觉得钱太好赚了吗?用金钱可以让人懂得提问之前需要自己付出一些 effort。

一般的 context menu 的介绍 https://msdn.microsoft.com/en-us/library/windows/desktop/cc144169(v=vs.85).aspx

你需要一个 verb,如何选择 static 还是 dynamic,选择哪种 dynamic,这里是介绍 https://msdn.microsoft.com/en-us/library/windows/desktop/dd758091(v=vs.85).aspx

你需要 dynamic,根据文档的介绍,最简单的、满足你的需要的方式是使用 IExplorerCommanf 接口,这里是实现规范 https://msdn.microsoft.com/en-us/library/windows/desktop/bb761880(v=vs.85).aspx
kokutou
2018-05-01 07:36:53 +08:00
去翻 7-zip 的源码。。。
zmj1316
2018-05-01 08:13:29 +08:00
应该是改注册表让系统传参数的 直接上 MSDN 看看?
geelaw
2018-05-01 09:40:07 +08:00
My apologise 因为头像是 hash 生成的所以看错发帖人,以为是同一个人连续问了好几个问题。
konecos
2018-05-01 13:21:23 +08:00
@zmj1316 的确通过修改注册表达到了一开始说的情况,但是无法达成我的目的,已通过搜索引擎都搜索了,基本上找不到有用的方法,有搜索到的一条解决办法是让多个开启的程序进行互相通讯然后传达参数到第二个程序
goreliu
2018-05-01 13:47:23 +08:00
这种比较复杂的场景得写 dll,写注册表的话应该是不行的。
imn1
2018-05-01 14:27:23 +08:00
右键 -> 单个 F,多个 T
这种需求只能自写吧?

如果我有你上述需求的话,我会在 TC 工具栏弄个自定义按钮

文件夹右键注册表项是:HKEY_CLASSES_ROOT\Directory\shell\自己添加的程序
自己搜搜
Arnie97
2018-05-01 20:36:19 +08:00
HKCR 里面文件夹相关的有 Directory,Drive 和 Folder ;另外,还有简单粗暴的 shell:sendto。
但是要区分一个还是多个恐怕要用 DLL。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/451137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX