- PVSM.RU - https://www.pvsm.ru -

Добавление сторонней программы в контекстное меню Windows

Здравствуйте. Недавно столкнулся с задачей, часть которой состояла в добавлении сторонней (для Windows) программы в запуск через контекстное меню, с передачей ей пути к файлу.

На русскоязычных сайтах/форумах находились лишь простенькие примеры запуска блокнота через контекстное меню рабочего стола. Углубившись в этой теме я нашел решение, думаю, что стоит поделиться им.

Программа, для вызова из контекстного меню

Для тестирования была написана простейшая программа на Qt/C++. Ее суть заключается в отображении полученного аргумента (пути файла):

#include <QtCore/QCoreApplication>
#include <iostream>
#include <cstdlib>
#include <QString>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString com = argv[1]; //Приравнивание аргумента к переменной для определения его наличия, как такового
    if(com.size() == 0) //Если размер переменной 0, следовательно, аргумент не был передан
    {
        cout<<"Path is not passed"<<endl;
    }
    else
    {
        cout<<"Path: "<<com.toStdString()<<endl;
    }
    system("pause");
    return a.exec();
}

Работа с реестром

Ввиду того, что требовалось получение пути любого файла, использовался адрес реестра: HKEY_CLASSES_ROOT*shell, в случае, если нужно так же получать путь директории: HKEY_CLASSES_ROOTFoldershell.

В директории HKEY_CLASSES_ROOT*shell был создан каталог «test» (название может быть любым, его так же можно редактировать изменив значение переменной, находящейся в созданном каталоге).

Добавление сторонней программы в контекстное меню Windows - 1

В котором, в свою очередь создан подкаталог «command», данное название подкаталога является обязательным.

Добавление сторонней программы в контекстное меню Windows - 2

Для добавления сторонней программы, изменим значение переменной "(по умолчанию)" на абсолютный путь к вашей программе, в моем случае это: C:UsersarturDocumentsbuild-regtest-Desktop_Qt_5_10_1_MinGW_32bit-Releasereleaseregtest.exe.

Для передачи пути файла в качестве параметра нужно дописать %1 к значению переменной.

Добавление сторонней программы в контекстное меню Windows - 3

Добавление сторонней программы в контекстное меню Windows - 4

Тест

В контекстном меню случайного файла был запущен, добавленный ранее, пункт «test».

Добавление сторонней программы в контекстное меню Windows - 5

Результат:

Добавление сторонней программы в контекстное меню Windows - 6

Источники

1. How to Add Any Application to the Windows Desktop Right-Click Menu [1]
2. Right click on Windows folder and open with Visual Studio Code [2]

Автор: Леонид Якубович

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/qt-2/276688

Ссылки в тексте:

[1] How to Add Any Application to the Windows Desktop Right-Click Menu: https://www.howtogeek.com/howto/windows-vista/add-any-application-to-the-desktop-right-click-menu-in-vista/

[2] Right click on Windows folder and open with Visual Studio Code: http://thisdavej.com/right-click-on-windows-folder-and-open-with-visual-studio-code/

[3] Источник: http://habrahabr.ru/sandbox/114818/