好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 onlyclxy 于 2022-11-15 20:19 编辑
刚才有个大佬帮我找到了一个地址,解决这个问题挺完美的:
C#下使用SharpShell自定义桌面鼠标右键菜单,一次选择多个文件进行后续处理 - ryan1985 - 博客园 (cnblogs.com)
看样子是需要写什么shell. 顺便给贴出的外国大佬研究贴
.NET Shell Extensions - Shell Context Menus - CodeProject
不过咱也看不懂. 现在打算先学个c#把现在的功能给实现了
近几年写程序遇到一个右键菜单的问题
windows的右键菜单 可以传递一个 %1(自身全路径.) 到某个程序里,这个大佬们应该是知道的.
如果一次性选择多个文件, 执行右键菜单传递%1, 会同时打开多个程序分别传递每个路径, 并不是多个文件的路径一起传递给一个程序. 这是前提,并且 很麻烦
我看网上的解决方案,是做一个消息传递,后开的程序,把路径传给第一个程序后关闭自身. 这样虽然能解决问题,但是程序不可以多开了,也挺麻烦.
如果上面我描述的不清楚,我举个例子:
比如我电脑有100个记事本, 我全选,点右键用记事本打开. 那么会打开100个记事本窗口,
比如有100个视频,我全选, 用potplayer播放, 那么并不是打开100个potplayer, 而是用1个potplayer添加了这100个视频的路径到列表里
压缩包也是. 我选中100个文件,右键添加到压缩文件, 不是同时打开了100个压缩窗口分别压缩每一个文件, 而是只出现了一个压缩窗口,压缩了100个文件.
假如说potplayer和压缩包也是用了消息传递. 后续打开的窗口把路径传给第一个窗口并且关闭了自身, 那么他就不可以多开(因为后续开的要自动关闭). 但是奇怪的是, 他又可以多开.
比如还是这100个视频, 我右键用potplayer播放, 出现一个播放器, 紧接着我又继续重复点右键,再次执行播放,这样会再出现一个播放器, 而不是说第二次点播放的,在第一个播放窗口播放.(这种感觉又不像消息传递)
压缩包也是同理.右键选中100个文件添加到压缩包, 出现一个压缩窗口, 紧接着我又继续重复点右键,再次执行添加到压缩包,这样会再出现一个压缩窗口, 而不是说第二次点添加到压缩的,第一个窗口多了一倍的路径.
这就超出了我的理解范畴了...
遂来请示看看有没有懂这个的大佬. 像他们这种,大概率是怎么实现的? |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|