Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: yarick от Март 12, 2013, 12:09



Название: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно
Отправлено: yarick от Март 12, 2013, 12:09
Хочу, чтобы при инсталляции моей прогаммы она автоматически себя записывала в список программ "открыть с помощью" и при клике пользователя на мой формат файла - открывала программу.
Вручную я это уже сделал, для этого нужно нажать "обзор" и выбрать exe-шник.

Но как это сделать программно? Я пытался через реестр, гуглил, нашёл решение, типа список программ находится в "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext\OpenWithList", но там у меня число в {} какое-то, списка нету.

К тому же, работа через реестр не рулит (как мне кажется) - в XP ветки реестра должны быть другие, как и в 8...

Есть ли кроссплатформенное решение в сторонних библиотеках - т.е. класс, который независимо от версии Windows позволяет добавлять через него программу в "открыть с помощью"?


Название: Re: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно
Отправлено: kambala от Март 12, 2013, 12:54
реестр в хп по сути такой же как и в 8

я где-то на форуме выкладывал такой с++-класс, поищи. еще можно посмотреть как это в хроме реализовано или просто почитать мсдн.


Название: Re: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно
Отправлено: gil9red от Март 12, 2013, 15:02
Угу, выкладывал :)
http://www.prog.org.ru/index.php?topic=22801.msg160821#msg160821


Название: Re: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно
Отправлено: yarick от Март 12, 2013, 21:38
Действительно, помог этот код

Код:
QSettings appRegSettings("HKEY_CURRENT_USER\\Software\\Classes\\" + qAppName() +
                             "\\shell\\open\\command",
                             QSettings::NativeFormat);
appRegSettings.setValue("Default",
                            "\"" + QDir::toNativeSeparators(qApp->applicationFilePath()) + "\" \"%1\"");

QSettings mp3Settings("HKEY_CURRENT_USER\\Software\\Classes\\.mp3", QSettings::NativeFormat);

mp3Settings.setValue("Default", qAppName());

А ещё вопрос - как картинку для значка заменить?



Название: Re: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно
Отправлено: Vamireh от Март 16, 2013, 12:21
Код из используемой программы, работает в 7, XP. В 8 не проверял.

Код:
    QSettings settings("HKEY_CLASSES_ROOT", QSettings::NativeFormat);
    settings.setValue(".uod/.", "MTRealization");
    settings.setValue("MTRealization/.", tr("Реализация МТ"));
    settings.setValue("MTRealization/shell/open/command/.", "\"" + QDir::toNativeSeparators(QCoreApplication::applicationFilePath()) + "\"" + " \"%1\"");
    settings.setValue("MTRealization/DefaultIcon/.", QString("%1,1").arg(QDir::toNativeSeparators(QCoreApplication::applicationFilePath())));


Название: Re: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно
Отправлено: abodnya от Май 01, 2013, 23:40
а в Линуксе как такое сделать не подскажете?