如何在c ++/QT中以编程方式右键单击文件/文件夹时添加自定义菜单?

Eng*_*eer 3 c++ windows macos qt contextmenu

我们有一个应用程序,它同步文件和文件夹,就像Dropbox一样.这是一个基于c ++/QT的安装程序.

我们想在文件或文件夹的右键单击上下文菜单中添加自定义菜单,就像Dropbox在下面的屏幕截图中所做的那样.

我们的目标是Windows和Mac平台.任何人都可以建议我如何开始吗?

在此输入图像描述

The*_*ght 5

在Mac上,您将遇到问题,因为添加到常规Finder上下文菜单已被弃用.

所以,您可能会想,如果它被弃用,那么Dropbox如何做到这一点?从我过去研究的内容来看,我相信他们会使用代码注入来注入正在运行的Finder应用程序的地址空间,然后使用一种称为方法调整的Objective-C功能来将一个方法调用到他们自己的一个方法,该方法位于在注入的代码中.

这都是相当硬核和非常低级别的,但是如果你要继续这个旅程,你可以先查看一个名为mach_inject的图书馆并搜索它.源代码可以在这里找到: -

https://github.com/rentzsch/mach_inject

但是,请注意,有些人认为代码注入错误,并且不会安装Dropbox或任何其他使用它的软件.此外,如果您计划在Mac Store中发布产品,我不希望任何执行代码注入的应用程序被允许.