V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ikas
V2EX  ›  Windows

为 windows11 新右键菜单添加自定义菜单

  •  
  •   ikas · 2021-07-15 17:55:59 +08:00 · 8529 次点击
    这是一个创建于 1232 天前的主题,其中的信息可能已经有所发展或是发生改变。

    windows11 新右键菜单干掉了几乎所有老的右键菜单..目前 app 也很少开始适配..
    这两天查了微软的文档还有微软的开源项目,目前终于搞出来了一个可以添加自定义的菜单的代码
    现在菜单需要在 AppxManifest.xml 中定义:

      <desktop4:Extension Category="windows.fileExplorerContextMenus">
              <desktop4:FileExplorerContextMenus>
                <desktop5:ItemType Type="*"  >
                  <desktop5:Verb Id="Command1" Clsid="46F650E5-9959-48D6-AC13-A9637C5B3787" />
                </desktop5:ItemType>
              </desktop4:FileExplorerContextMenus>
            </desktop4:Extension>
    
           <com:Extension Category="windows.comServer">
              <com:ComServer>
                <com:SurrogateServer  DisplayName="Context menu verb handler">
                  <com:Class Id="46F650E5-9959-48D6-AC13-A9637C5B3787" Path="X.dll" ThreadingModel="STA"/>
                </com:SurrogateServer>
              </com:ComServer>
            </com:Extension>
    

    然后就只需要实现 IExplorerCommand 接口,然后注册就行了

    class __declspec(uuid("46F650E5-9959-48D6-AC13-A9637C5B3787")) TestExplorerCommandHandler final : public BaseExplorerCommand
    {
    public:
    	const wchar_t* Title() override { return L"sample"; }
    	const EXPCMDSTATE State(_In_opt_ IShellItemArray* selection) override { return ECS_ENABLED; }
    };
    
    CoCreatableClass(TestExplorerCommandHandler)
    
    
    class BaseExplorerCommand : public RuntimeClass<RuntimeClassFlags<ClassicCom>, IExplorerCommand, IObjectWithSite>
    {
    ...
    }
    

    我自己写了 2 个,一个 7z 解压,一个 vscode 打开文件..
    其他的可以自行开发了..这个应该都难不倒大家了

    demo 代码我扔到 github 了,无聊的可以看看 ikas-mc/ContextMenuForWindows11
    代码问题大家看看就行了,我第一次写 c++

    6 条回复    2022-10-13 16:14:45 +08:00
    israinbow
        1
    israinbow  
       2021-07-15 19:41:51 +08:00
    👍顶
    israinbow
        2
    israinbow  
       2021-07-15 19:44:27 +08:00   ❤️ 1
    1# 本来打了很多字, 但是想了想删了, 然后发出来才想起来算无意义灌水了, 在 2 楼补充一下吧.
    win11 的右键菜单在注册表的位置没有很多变动, 利用 github.com/BluePointLilac/ContextMenuManager/releases 这样的工具依然可以修改及自定义.
    ikas
        3
    ikas  
    OP
       2021-07-15 20:56:30 +08:00
    @israinbow 这个软件我也在用.....不过新的右键是不显示的吧....
    Chipmunker
        4
    Chipmunker  
       2022-05-13 17:23:18 +08:00
    找了很久解决方案了,感谢 OP 的项目。
    nanvon
        5
    nanvon  
       2022-09-22 17:34:27 +08:00
    好用!顶
    usnake
        6
    usnake  
       2022-10-13 16:14:45 +08:00   ❤️ 1
    试试啊 想法很好,拥抱变化,而不是一味想切换回旧版
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:12 · PVG 22:12 · LAX 06:12 · JFK 09:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.