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

в 21:34, , рубрики: c++, qt, системное администрирование

Здравствуйте. Недавно столкнулся с задачей, часть которой состояла в добавлении сторонней (для 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
2. Right click on Windows folder and open with Visual Studio Code

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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js