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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Windows, Ассоциации файлов  (Прочитано 4201 раз)
leonike
Гость
« : Апрель 05, 2011, 18:53 »

Здравствуйте.
Есть приложение, допустим лежит оно в "C:\Program Files\Application\app.exe

нужно чтобы файл с расширением ".mp3" (для примера) открывался этим приложением.

Знаю, что нужно проделывать манипуляции с реестром, что можно сделать с помощью QSettings. Смотрел эту тему. Однако, не смог разобраться. Мог бы кто-нибудь подробно расписать как это сделать и объяснить.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 05, 2011, 18:55 »

Что именно непонятно/не получается?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
leonike
Гость
« Ответ #2 : Апрель 05, 2011, 19:37 »

Что именно непонятно/не получается?
Да этот реестр темный лес )

во, кстати, ваш комментарий.

QSettings settings ("HKEY_CLASSES_ROOT", QSettings::NativeFormat);  - понятно

settings.setValue (".dbf/.", "QDBFRedactor.file"); - тут непонятно, ".dbf/." - это, как я понял, расширение файла, т.е. в моем случае будет ".mp3/.", а что такое "QDBFRedactor.file"

settings.setValue ("QDBFRedactor.file/.", tr("File of database")); - вообще не ясно, что такое )
settings.setValue ("QDBFRedactor.file/shell/open/command/.",                                                                                        
                                           "\"" + QDir::toNativeSeparators (QCoreApplication::applicationFilePath()) + "\"" + " \"%1\""); - тут указываем путь до экзешника приложения, если я правильно понял
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Апрель 05, 2011, 20:42 »

settings.setValue (".dbf/.", "QDBFRedactor.file"); - это привязка расширения к названию (на сколько я помню)
settings.setValue ("QDBFRedactor.file/.", tr("File of database")); - тут просто описание
А дальше да, путь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
leonike
Гость
« Ответ #4 : Апрель 05, 2011, 21:07 »

вот как я делаю

Код:
QSettings regSettings("HKEY_CLASSES_ROOT", QSettings::NativeFormat);
regSettings.setValue(".mp3\\.", qAppName());
regSettings.setValue("\\" + qAppName() + "\\shell\\open\\command", "\"" +
                         QDir::toNativeSeparators(qApp->applicationFilePath()) +
                         "\" %1");
Вот только ничего не работает

При выполнении кода: QSettings: failed to set subkey ".mp3\."
« Последнее редактирование: Апрель 05, 2011, 22:04 от leonike » Записан
leonike
Гость
« Ответ #5 : Апрель 06, 2011, 09:57 »

понял в чем дело, в ветку HKEY_CLASSES_ROOT можно писать только с админскими правами.

поэтому делаю так:
Код:
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());

Теперь реестр меняется, ветки появляются, и все работает!!  Подмигивающий
« Последнее редактирование: Апрель 06, 2011, 10:18 от leonike » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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