Название: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 05, 2012, 19:52 Здравствуйте, уважаемые форумчане! :)
Есть приложение, и есть тип файлов, которое используется приложением, такой тип не является распространенным Связываю такой тип в HKEY_CLASSES_ROOT, указывая тип файла, пусть будет XPEH (уважаемые форумчане, это сочетание цифр было напечатано латиницей! :D), тогда получается путь в реестре будет HKEY_CLASSES_ROOT/.XPEH, осталось связать этот тип с чем то Связываю с действием открыть и указываю путь к программе, которая и будет запускаться, когда файл типа .XPEH будет открываться и укажем каким параметром нашей программы будет передаваться абсолютный путь к открываемому файлу HKEY_CLASSES_ROOT/.XPEH/shell/open/command/"С:\prog.exe" "%1", Теперь настройка иконки, она будет лежать в ехе, с которым и ассоциируется файл: HKEY_CLASSES_ROOT/.XPEH/DefaultIcon/С:\prog.exe, 2 Но иконки не меняются и не появляются! Когда я мучался, и перезаписывал и создавал разделы в реестре, удавалось (не помню как, реестр то еще "удовольствие", особенно когда ради чистоты проверок, нужно убирать все что добавлял) показать иконки на файлах своего типа, но косячно: на рабочем столе своя иконка показывается, а в корне диска почему то нет, при просмотре файлов через диалоги открытия/сохранения не показывается, и тому подобное Гугление не помолго, нашел пару сайтов, в которых кратко описана структура реестра виндовс, несколько сайтов делфи, в которых показывалось как с действием Открыть связать программу, и кучу сайтов, в которых популярным языком объясняется как с помощью одной мышки ассоциацию сделать (правый клик->открыть с помощью, и подобное) Объясните/покажите, как в реестре настроить показ иконки файла :) Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: Serr500 от Ноябрь 05, 2012, 21:38 Код: HKCR Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: Fregloin от Ноябрь 06, 2012, 15:41 Может стоит сделать набор иконок для разных размеров с разным bpp? и впихунть в одну ico, например через iconlover.
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: Serr500 от Ноябрь 06, 2012, 16:44 Это несущественно. Без второй ветки реестра оно у меня косячило и при многостраничной иконке и при одиночной. Если иконка одна, то для меньших размеров она масштабируется, а для бОльших остаётся исходного размера.
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 07, 2012, 02:32 Получилось показать иконку, но опять начались странности
Код файла ресурсов rc Код: // иконка ехе Код установления иконки: Код: QSettings hkcr("HKEY_CLASSES_ROOT", QSettings::NativeFormat); Результат на скриншотах :) Иконка на рабочем столе вообще была до новой (в новой есть прозрачность), которая видна везде кроме раб стола, не понимаю, почему старая отображается, ведь и она была взята с ехе, и ее там нет, я проверял Да и иконка, если смотреть через диалоги, видна нормально (видна новая) В общем, единственный вопрос, приходящий в голову: Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 07, 2012, 02:56 Изменил расширения файла, использованного в программе, в итоге, на рабочем столе для нового расширения все равно показывается старая иконка, но зато иконка теперь видна в корне диска D, в отличии от предыдущего расширения, странно все это...
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: kambala от Ноябрь 07, 2012, 11:52 пробовал перезапустить процесс explorer.exe?
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 07, 2012, 22:40 Пробовал, после этого отображение иконок стало правильным, от части...
на рабочем столе иконка так и показывается старая 1 создаю папку на раб столе, копирую свой файл в эту папку - иконка старая 2 копирую этот файл на диск D - иконка новая 3 открываю папку рабочего стола - иконка новая Может где то что то на компе надо почистить, чтобы на раб столе правильно показывалось? И почему если я открываю папки с раб.стола, в которых мой формат, то в них иконка старая, если я открою эти папки, но начну с Мой компьютер -> D: -> Document... -> User -> Desktop, то файлы имеют правильное отображение Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: Igors от Ноябрь 07, 2012, 22:45 Та работает оно, надо только порыться в ихней помойной яме (реестре). И не надо так элегантно сачковать "объясните как" - тут объяснять нечего, ройтесь :)
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 08, 2012, 00:07 Дайте хоть пинка в нужном направлении :) этоже как искать микроба в помойной кучи :D
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: V1KT0P от Ноябрь 08, 2012, 00:22 Дайте хоть пинка в нужном направлении :) этоже как искать микроба в помойной кучи :D Посмотри как это делают популярные опен-сорсные программы такие как VLC, 7-zip, LibreOffice и т.д.Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 08, 2012, 02:29 Дайте хоть пинка в нужном направлении :) этоже как искать микроба в помойной кучи :D Посмотри как это делают популярные опен-сорсные программы такие как VLC, 7-zip, LibreOffice и т.д.Но если зайти в папку рабочего стола, то в ней показывается новая, и я спрашивал как с этим непотребством бороться :) Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: Bepec от Ноябрь 08, 2012, 06:54 Не ставить винду из сборок и обновлять рабочий стол почаще :D
Название: Re: Объясните как программно для ассоциированных файлов установить иконку (Windows) Отправлено: gil9red от Ноябрь 08, 2012, 17:38 Не ставить винду из сборок и обновлять рабочий стол почаще :D :D |