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

2021-07-15 17:55:59 +08:00
 ikas

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++

8568 次点击
所在节点    Windows
6 条回复
israinbow
2021-07-15 19:41:51 +08:00
👍顶
israinbow
2021-07-15 19:44:27 +08:00
1# 本来打了很多字, 但是想了想删了, 然后发出来才想起来算无意义灌水了, 在 2 楼补充一下吧.
win11 的右键菜单在注册表的位置没有很多变动, 利用 github.com/BluePointLilac/ContextMenuManager/releases 这样的工具依然可以修改及自定义.
ikas
2021-07-15 20:56:30 +08:00
@israinbow 这个软件我也在用.....不过新的右键是不显示的吧....
Chipmunker
2022-05-13 17:23:18 +08:00
找了很久解决方案了,感谢 OP 的项目。
nanvon
2022-09-22 17:34:27 +08:00
好用!顶
usnake
2022-10-13 16:14:45 +08:00
试试啊 想法很好,拥抱变化,而不是一味想切换回旧版

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

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

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

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

© 2021 V2EX