У нас есть приложение, которое синхронизирует файлы и папки, как это делает Dropbox. Это установщик на основе c ++ / QT.
Мы бы хотели добавить пользовательское меню в контекстное меню файла или папки, щелкнув правой кнопкой мыши, как в раскрывающемся скриншоте ниже.
Мы нацелены на оба окна & Платформы Mac. Кто-нибудь может подсказать, с чего начать?
На Mac у вас будут проблемы, так как добавление в общее контекстное меню Finder устарело.
Итак, вы можете подумать, если это устарело, то как Dropbox делает это? Из того, что я исследовал в прошлом, я полагаю, что они используют внедрение кода для внедрения в адресное пространство работающего приложения Finder, а затем функцию Objective-C, известную как метод swizzling, для изменения вызова метода на свой собственный, который расположен в введенном коде.
Это все довольно хардкорный и очень низкий уровень, но если вы собираетесь отправиться в это путешествие, вы можете начать с изучения библиотеки под названием mach_inject и поискать ее в Google. Исходный код можно найти здесь: —
https://github.com/rentzsch/mach_inject
Однако следует помнить, что есть те, кто считает, что внедрение кода неправильно, и не будет устанавливать Dropbox или любое другое программное обеспечение, которое его использует. Кроме того, если вы планируете выпустить продукт в Mac Store, я не ожидаю, что какое-либо приложение, которое выполняет внедрение кода, будет разрешено.
Для окон, я мог бы найти полный пример расширения оболочки здесь.