Название: Windows, Ассоциации файлов Отправлено: leonike от Апрель 05, 2011, 18:53 Здравствуйте.
Есть приложение, допустим лежит оно в "C:\Program Files\Application\app.exe нужно чтобы файл с расширением ".mp3" (для примера) открывался этим приложением. Знаю, что нужно проделывать манипуляции с реестром, что можно сделать с помощью QSettings. Смотрел эту (http://www.prog.org.ru/topic_14185_0.html) тему. Однако, не смог разобраться. Мог бы кто-нибудь подробно расписать как это сделать и объяснить. Название: Re: Windows, Ассоциации файлов Отправлено: Пантер от Апрель 05, 2011, 18:55 Что именно непонятно/не получается?
Название: Re: Windows, Ассоциации файлов Отправлено: leonike от Апрель 05, 2011, 19:37 Что именно непонятно/не получается? Да этот реестр темный лес )во, кстати, ваш комментарий (http://www.prog.org.ru/index.php?topic=14185.msg92747#msg92747). 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\""); - тут указываем путь до экзешника приложения, если я правильно понял Название: Re: Windows, Ассоциации файлов Отправлено: Пантер от Апрель 05, 2011, 20:42 settings.setValue (".dbf/.", "QDBFRedactor.file"); - это привязка расширения к названию (на сколько я помню)
settings.setValue ("QDBFRedactor.file/.", tr("File of database")); - тут просто описание А дальше да, путь. Название: Re: Windows, Ассоциации файлов Отправлено: leonike от Апрель 05, 2011, 21:07 вот как я делаю
Код: QSettings regSettings("HKEY_CLASSES_ROOT", QSettings::NativeFormat); При выполнении кода: QSettings: failed to set subkey ".mp3\." Название: Re: Windows, Ассоциации файлов Отправлено: leonike от Апрель 06, 2011, 09:57 понял в чем дело, в ветку HKEY_CLASSES_ROOT можно писать только с админскими правами.
поэтому делаю так: Код: QSettings appRegSettings("HKEY_CURRENT_USER\\Software\\Classes\\" + qAppName() + Теперь реестр меняется, ветки появляются, и все работает!! ;) |