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

标签 c++ windows macos qt contextmenu

我们有一个应用程序可以像 dropbox 一样同步文件和文件夹。这是一个基于 C++/QT 的安装程序。

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

我们的目标是 Windows 和 Mac 平台。谁能建议我如何开始?

enter image description here

最佳答案

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

因此,您可能会想,如果它已被弃用,那么 Dropbox 是如何做到这一点的呢?根据我过去的研究,我相信他们使用代码注入(inject)来注入(inject)正在运行的 Finder 应用程序的地址空间,然后使用称为方法调配的 Objective-C 功能将调用方法更改为他们自己的方法之一,该方法位于在注入(inject)的代码中。

这一切都相当硬核且水平很低,但如果您要继续那段旅程,您可以从查看名为 mach_inject 的库开始,然后用谷歌搜索它。源代码可以在这里找到:-

https://github.com/rentzsch/mach_inject

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

关于c++ - 如何在 c++/QT 中以编程方式右键单击文件/文件夹时添加自定义菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16516732/

相关文章:

C++专门化模板类函数而无需重复代码

c++ - Qt (C++) 日志充满 "Widget (address) does not have a property named (var)"

node.js - 用于生产的 Ember 构建花费了超过预期的时间

Python – time.time() 与 bash 时间

Java:如何使用 Quicksilver 对 Java API 文档进行编目?

C++我期待缩小转换错误但没有得到它

C++ Vector at/[] 运算符速度

windows - 油漆桶光标?

windows - xperf 无法加载我的 DLL 的符号

macos - 如何在不停止进程的情况下在使用 node.js 执行文件时关闭终端窗口?