Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как ассоциировать файлы
Форум на CrossPlatform.RU > Разработка > Инструменты разработчика
ruzik
Как ассоциировать файлы определенного расширения с программой и как заставить его правильно открывать ассоциированный файл(то есть например асс с txt и когда открываешь файл с расширением txt у тебя он отображается в редакторе)
Заранее спасибо!
Litkevich Yuriy
В Qt это ни как не решается.
RazrFalcon
Легко. В гугле находится быстро. Это все правится через реестр. Если не ошибаюсь, то при открытие реестра, первая ветка, в ней все разрешения. Создаешь свое и по аналогии прописываешь свою прогу.
Алексей1153
RazrFalcon, это только для винды )
ruzik
А в Linuxe и Мac'e вообще есть такая функция как ассоциирование и как там это дело решается

Я нашел первую ветку реестра с ассоциациями, но там в основном записи типа имени программы(см аттач), то есть как я понимаю для того что бы все работало программу нужно где-то зарегистрировать что бы система знала на какой exe ссылаться как написано только название программы
ruzik
Я думаю что в Linuxe и Mace такое то же есть, только вот там как это сделать
RazrFalcon
Цитата(Алексей1153 @ 25.5.2011, 8:13) *
RazrFalcon, это только для винды )

А мы не про винду?

Цитата
Я думаю что в Linuxe и Mace такое то же есть, только вот там как это сделать

Тут или через гуй, или через консоль. Через гуй вообще не реально, так как валом DE.
Проще всего: создать *.desktop файл, бросить его в /usr/share/applications и в нем прописать свою прогу к конкретному mime-type'у и все.
;)
ruzik
Попробовал это сделать:
    QSettings settings("HKEY_CLASSES_ROOT\\.qss",
        QSettings::NativeFormat);
    settings.setValue("", "Rizek_Qss_Editor");

Файл ассоциировался, только вот при открытии выдает диалог что не знает чем открыть, как зарегестировать программу в системе, что бы все работало
Litkevich Yuriy
Цитата(ruzik @ 22.6.2011, 20:55) *
как зарегестировать программу в системе, что бы все работало
посмотри, например, как реализован .cpp

Обычно структура такая:
-Расширение
-- Название типа файла
...
-Название типа файла
-- Имя команды
--- Путь к приложению
Strikevld
Для вин 7 часто оказывается бесполезным править реестр, файл всё равно открывается в старом приложении!
т.е. для Vista и выше нужно пользовать функцию SetAppAsDefault
Эта функция на MSDN...
Sokoloff
В линухе это делается через утилиту xdg-mime
Например:
$ xdg-mime default feh.desktop image/jpeg
теперь jpeg-и будут открываться в feh.

Проверим:
$ xdg-mime query default image/jpeg
feh.desktop

Реально пользовательские ассоциации хранятся в ~/.local/share/applications/defaults.list. Это обычный инишник вида
[Default Applications]                                                                                       
text/html=chromium-browser.desktop                                                                          
application/lrf=calibre-lrfviewer.desktop                                                                    
application/x-directory=kde4/dolphin.desktop                                                                
audio/mpeg=vlc.desktop                                                                                      
image/jpeg=feh.desktop
При желании его можно править ручками.

P.S. В некоторых случаях путь к defaults.list может отличатся от ~/.local/share/. Поэтому если кто будет писать реальный код, то прочтите XDG Base Directory Specification.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.