Pull to refresh

Добавление сторонней программы в контекстное меню 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_ROOT\Folder\shell.

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



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



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

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





Тест

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



Результат:



Источники

1. How to Add Any Application to the Windows Desktop Right-Click Menu
2. Right click on Windows folder and open with Visual Studio Code
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.