Russian Qt Forum
Ноябрь 25, 2024, 03:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавить программу в "открыть с помощью" для Windows 7 или кроссплатформенно  (Прочитано 7779 раз)
yarick
Гость
« : Март 12, 2013, 12:09 »

Хочу, чтобы при инсталляции моей прогаммы она автоматически себя записывала в список программ "открыть с помощью" и при клике пользователя на мой формат файла - открывала программу.
Вручную я это уже сделал, для этого нужно нажать "обзор" и выбрать exe-шник.

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

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

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Март 12, 2013, 12:54 »

реестр в хп по сути такой же как и в 8

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Март 12, 2013, 15:02 »

Угу, выкладывал Улыбающийся
http://www.prog.org.ru/index.php?topic=22801.msg160821#msg160821
Записан

yarick
Гость
« Ответ #3 : Март 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());

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

Записан
Vamireh
Гость
« Ответ #4 : Март 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())));
« Последнее редактирование: Март 16, 2013, 12:23 от Vamireh » Записан
abodnya
Гость
« Ответ #5 : Май 01, 2013, 23:40 »

а в Линуксе как такое сделать не подскажете?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.