V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
konecos
V2EX  ›  问与答

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

  •  
  •   konecos · 2018-05-01 03:14:50 +08:00 · 2194 次点击
    这是一个创建于 2428 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前的情况是:

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

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

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

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

    如何实现

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

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

    第 1 条附言  ·  2018-05-01 16:42:15 +08:00
    实际上只实现 一次性传递多个文件 /文件夹名到单个我的程序 也可以
    8 条回复    2018-05-01 20:36:19 +08:00
    geelaw
        1
    geelaw  
       2018-05-01 03:49:51 +08:00 via iPhone   ❤️ 2
    我建议你购买微软的开发者技术支持,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
        2
    kokutou  
       2018-05-01 07:36:53 +08:00 via Android
    去翻 7-zip 的源码。。。
    zmj1316
        3
    zmj1316  
       2018-05-01 08:13:29 +08:00 via Android
    应该是改注册表让系统传参数的 直接上 MSDN 看看?
    geelaw
        4
    geelaw  
       2018-05-01 09:40:07 +08:00
    My apologise 因为头像是 hash 生成的所以看错发帖人,以为是同一个人连续问了好几个问题。
    konecos
        5
    konecos  
    OP
       2018-05-01 13:21:23 +08:00
    @zmj1316 的确通过修改注册表达到了一开始说的情况,但是无法达成我的目的,已通过搜索引擎都搜索了,基本上找不到有用的方法,有搜索到的一条解决办法是让多个开启的程序进行互相通讯然后传达参数到第二个程序
    goreliu
        6
    goreliu  
       2018-05-01 13:47:23 +08:00
    这种比较复杂的场景得写 dll,写注册表的话应该是不行的。
    imn1
        7
    imn1  
       2018-05-01 14:27:23 +08:00
    右键 -> 单个 F,多个 T
    这种需求只能自写吧?

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

    文件夹右键注册表项是:HKEY_CLASSES_ROOT\Directory\shell\自己添加的程序
    自己搜搜
    Arnie97
        8
    Arnie97  
       2018-05-01 20:36:19 +08:00 via Android
    HKCR 里面文件夹相关的有 Directory,Drive 和 Folder ;另外,还有简单粗暴的 shell:sendto。
    但是要区分一个还是多个恐怕要用 DLL。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   847 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:33 · PVG 05:33 · LAX 13:33 · JFK 16:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.