Windows 11 有没有这样的菜单 Api

2022-08-12 09:34:14 +08:00
 ColinZeb

如图,如果能把压缩软件的子菜单实现为类似顶部的快捷按钮,我就打算自己用 7z 实现一个。

但是没见过别的软件实现过,也不会找 win api ,请教一下各位。

4347 次点击
所在节点    程序员
17 条回复
ColinZeb
2022-08-12 09:37:14 +08:00
附加一个补充议题,不知道各位有没有这样的一个解压需求,就是自动解压到某个固定文件夹并打开解压后文件夹,比如下载的各种绿色软件。现在的 360 压缩,bandzip 所谓的自动解压都是自动解压当前目录,但是没实现自动解压到固定 /常用目录
zed1018
2022-08-12 09:42:03 +08:00
目测是没有的,而且我个人不希望有,不然一堆国产软件肯定无脑注册那块的入口。我个人支持 win11 的新版右键菜单的一部分原因就是一个程序只能注册一个入口,不然右键拉出来一大长溜。
codehz
2022-08-12 09:42:37 +08:00
顶部的就是系统独占的(
ColinZeb
2022-08-12 09:47:48 +08:00
@zed1018
@codehz 不是要顶部的,而是单独一行,就比如 winrar 所在这一行。做成排列的
zed1018
2022-08-12 09:48:44 +08:00
codehz
2022-08-12 09:51:58 +08:00
@ColinZeb #4 那也不行,这个菜单定制能力很弱,只有单行文字+图标,然后顶级菜单也只能是静态的(子菜单内容可以动态决定)
popok
2022-08-12 09:52:19 +08:00
@ColinZeb #4 winrar 设置里可以选择不折叠啊,全部显示在同一列。

而且你需要自己搞这种的话,应该是在注册表里添加的,具体你可以搜一下“右键菜单 注册表”
weiwei17Ra
2022-08-12 09:57:31 +08:00
@ColinZeb 你说的不就是自定义 context menu 这个功能吗
就是右键点击一个对象的时候 重新绘制 右键上下文菜单 加入自己的功能
这个需要老的 win32
开发 基本上是 hook explorer 用 c 或者出 c++ .net 开发需要 c 或者出出 c++写的 dll 操作
你是 github 上找找
geelaw
2022-08-12 10:08:56 +08:00
@weiwei17Ra #8 开发方法应该是 IConextMenu, IDropTarget, IExecuteCommand, IExplorerCommand, IExplorerCommandState 之类的,不需要 hook explorer 。

如果是静态菜单,有好几种方法:

https://docs.microsoft.com/en-us/windows/win32/shell/creating-static-cascading-menus

如果是动态菜单,目前推荐的方法是使用 IExplorerCommand (简单功能),古老的方法是使用 IContextMenu, IContextMenu2, IContextMenu3 (复杂功能)。

https://docs.microsoft.com/en-us/windows/win32/shell/how-to-implement-the-icontextmenu-interface
eason1874
2022-08-12 10:18:52 +08:00
Windows 右键菜单在注册表就可以添加,跟数据库管理差不多,也就新建几项,指向你要运行的程序

你要自定义处理过程,写个 bat 或者 ps1 ,右键菜单 command 指向它就可以,好像传入第一个参数就是对应文件路径。关键词:windows add context menu
sunhelter
2022-08-12 11:08:36 +08:00
@zed1018 没有限制一个吧,PowerToys 就注册了 PowerRename 和调整图片大小两个菜单
mgrddsj
2022-08-12 11:15:38 +08:00
@ColinZeb #1 这个需求我可以答,但可能得习惯一下。
把常用目录固定到快速访问。以后见到压缩包,在文件资源管理器里打开到它的目录,选中压缩包之后,右键按住并拖拽到左侧快速访问里面的目标文件夹。在弹出的窗口里用你喜欢的解压缩软件解压就可以。

缺点是不能在浏览器里的下载里直接打开压缩包,必须“在文件资源管理器打开到文件目录”。

这里用 Bandizip + Win 10 举例:

<amp-youtube data-videoid="AO5MG8qwvXk" layout="responsive" width="480" height="270"></amp-youtube>
注意是按住右键拖动压缩包到目标文件夹。
clf
2022-08-12 11:18:09 +08:00
我现在 win11 已经是双击解压了。
zed1018
2022-08-12 11:29:41 +08:00
@sunhelter 具体限制不太清楚,但是确实在哪里看到过,另一方面 powertoys 的工具其实都是独立的。
ColinZeb
2022-08-12 12:55:00 +08:00
@mgrddsj 这个不错,感谢。

@eason1874 自定义菜单一直就有,我想要的是一行菜单多个命令,不是多行菜单也不是二级菜单。参考就是 win11 自带的第一行菜单,截图蓝色划线部分
ikas
2022-08-13 11:02:36 +08:00
目前没有这个 api

右键拖动那个菜单 api,老的写法还能用

目前新的能用的几乎都是针对 packaging app 的....
https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/desktop-to-uwp-extensions#context-menu
TGSAN
2022-08-14 16:10:20 +08:00

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

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

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

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

© 2021 V2EX