|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|
Ассоциация расширения файлов с программой16.04.2011, 11:25. Показов 16861. Ответов 36
Метки нет (Все метки)
Visual Studio 2008, проект MFC dialog-based.
Подскажите, как ассоциировать расширение файла (например, .xyz) со своей программой, чтобы по двойному клику на файле он открывался в программе. Если попытаться через "Открыть с помощью", то программа просто запускается, а открытия файла не происходит. Нашел несколько ссылок, но там толком не объясняется.
0
|
|
| 16.04.2011, 11:25 | |
|
Ответы с готовыми решениями:
36
Ассоциация файлов с программой
|
|
21 / 21 / 2
Регистрация: 11.01.2009
Сообщений: 110
|
|
| 16.04.2011, 19:44 | |
|
1)
All extensions, file types and classes are stored in the Windows registry beneath the registry key HKEY_CLASSES_ROOT. The file type for files having extension .txt is stored in the registry key HKEY_CLASSES_ROOT\.txt and its associated file type, mostly txtfile, can be found in the key HKEY_CLASSES_ROOT\txtfile. Classes can be found beneath the key HKEY_CLASSES_ROOT\CLSID key and the applications beneath HKEY_CLASSES_ROOT\Applications. These settings are valid for the whole workstation. как я понимаю нужно работать с реестром 2) когда программа будет открываться ей в параметры передадутся пути к файлу(лам)
1
|
|
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|
| 17.04.2011, 09:21 [ТС] | |
|
мистер х, спасибо, к сожалению только в понедельник смогу попробовать покопаться
0
|
|
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
||||||
| 18.04.2011, 19:25 [ТС] | ||||||
|
Не получилось. Пробовал по примеру ниже:
HKEY_CLASSES_ROOT\.grf\ Default = "Grafik.exe" (вместо "Grafik.exe" было "grf_auto_file") Был ключ HKEY_CLASSES_ROOT\grf_auto_file... Переименовал в HKEY_CLASSES_ROOT\Grafik.exe... HKEY_CLASSES_ROOT\Grafik.exe\shell\open\ command\ Default = "C:\Program Files\Grafik\Grafik.exe %1" Теперь при попытке "Открыть с помощью..." моей программы даже нет в списке, хоть и указываю путь к ней) Удалил эти ключи из реестра, переустановил прогу, все вернулось в изначальное состояние, т.е. запускается программа, но не открывается файл.
0
|
||||||
|
21 / 21 / 2
Регистрация: 11.01.2009
Сообщений: 110
|
|
| 18.04.2011, 22:57 | |
|
а компьютер перезагружал ? ))))))))))))))))))))))
а ты не пробовал все это самостоятельно делать может программа как-то криво все это делает? еще на примере Picasa увидел что в папке DefaultIcon тот же файл только с параметром 102....
0
|
|
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
||||
| 19.04.2011, 18:41 [ТС] | ||||
|
0
|
||||
|
21 / 21 / 2
Регистрация: 11.01.2009
Сообщений: 110
|
|
| 20.04.2011, 23:20 | |
|
я в своем реестре смотрел, расширение jpg
насчет перезагрузки : как я понимаю все изменения только после перезагрузки вступают в силу вот смотри кое-что нашел http://www.ubercode.com/write-... s-api.html 3. How do I create file associations?
1
|
|
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|
| 21.04.2011, 18:45 [ТС] | |
|
мистер х, спасибо, поразбираюсь, завтра отпишусь
нашел еще кое-что: http://phi.lho.free.fr/windows... ns.en.html похоже надо на англ. языке искать, там инфы больше
0
|
|
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|
| 22.04.2011, 22:19 [ТС] | |
|
ничего не получилось...
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 15
|
||||||
| 15.07.2011, 22:26 | ||||||
|
А ParamStr(1); юзать в коде программы не пробовал? Если открываешь 1 файл, то тут адрес к нему хранит программа.
Отсюда уже прога может обработать что надо. Один момент -- на C++ при использовании ParamStr(k) надо прописывать ParamStr(k).c_str(), т.к. многие процедуры просят не строку, а ссылку на нее. Добавлено через 11 минут Например:
0
|
||||||
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|
| 16.07.2011, 09:39 [ТС] | |
|
Dr.Savinkov, спасибо, попробую
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 15
|
|||||||
| 17.07.2011, 01:27 | |||||||
|
UFO665, один момент! извиняюсь, если выдам ненужную или известную тебе информацию, но!
1) ParamStr(k) лишь передаёт в программу адрес открываемого файла в формате "FileDrive:/FileFolder/FileName.FileExt"; 2) первый пункт на реестр НИКАК не влияет. Он лишь позволяет открыть уже ассоциированные файлы с помощью, например, "Открыть как". Как регать в реестре--сам пока разбираюсь. А твой вариант регистрации работает? Добавлено через 1 час 6 минут Ах да, кажись для того, чтобы изменения в Реестре(!!!) вступили в силу, надо перезапустить процесс explorer. Выключить и вновь запустить. Как выключить не помню. Лежит его exe-шник кажись в "C:/WINDOWS/system32/". Думаю, для запуска будет достаточно
Добавлено через 46 минут
0
|
|||||||
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|||
| 17.07.2011, 10:57 [ТС] | |||
|
К сожалению, смогу попробовать разобраться только в начале августа, сейчас в отпуске. Спасибо за помощь)
0
|
|||
|
|
|
| 17.07.2011, 18:32 | |
|
Я бы не заморачивался, и воспользовался стандартным диалогом прописи файла который заложен в винде. Для ХП его вид приведен на 1-й миниатюре. После того как расширение будет зарегетрировано, сохранить из реестра в reg-файл ветвь с нужным расширением, и забить в прогу при её первом записи простое копирование в реестр готовых ключей из reg-файла.
1
|
|
|
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 15
|
|
| 17.07.2011, 19:06 | |
|
UFO665, ты неправильно понял мой вопрос. У тебя прога реестр правильно изменяла? ты проверял?
-=ЮрА=-, можно поподробнее? в принципе, у меня Вин 7, но может пригодится твой метод. Но ты не понял суть вопроса. Файл ассоциирован(насколько я понял). Соль в том, что у приложения нет "зацепки"--адреса открываемого файла. А мы даём такую зацепку из ParamStr(1). ParamStr(0)-адрес собственно работающего приложения; ParamStr(1)-параметр №1; // в данном случае адрес открываемого файла; . . . ParamStr(n)-параметр №n;
0
|
|
|
|
|
| 17.07.2011, 19:56 | |
|
Как ты проверял что файл ассоциирован, реестр открывал???
Файл асоциирован если есть запись .xyz в втеви HKEY_CLASSES_ROOT, если есть возможность экспортируй в reg-файл содержимое ветви .xyz и выложи сюда, попробую проверить ![]() Ну и не совсем понял, программа, что должна запускаться из командной строки???
0
|
|
|
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 15
|
|
| 17.07.2011, 20:24 | |
|
-=ЮрА=-, как бы сказать... Короче, когда файл ассоциирован в реестре, то прога должна съесть его через "Открыть" или "Открыть как". Для этого ей нужен адрес файла, который передаётся в Винде через командную строку и доступен в программе как ParamStr(k);
![]() Вот как то так... Это то, что я знаю по теме, т.к. сам щас занят чем-то подобным, но у меня почти всё уже работает))) щас забабахаю регистратор расширений, и всё
0
|
|
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
||||
| 17.07.2011, 21:40 [ТС] | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 15
|
||
| 18.07.2011, 00:05 | ||
|
--> 2 пункт: как раз это и говорит, что расширение "как бы ассоциировано"; --> 3 пункт: смотри выше ответ Юре. Добавлено через 2 часа 2 минуты Вот еще нашёл статейку, поможет тем, у кого главный диск не "С" http://www.sources.ru/builder/faq/040.html
0
|
||
|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|||||||
| 18.07.2011, 10:59 [ТС] | |||||||
0
|
|||||||
| 18.07.2011, 10:59 | |
|
Помогаю со студенческими работами здесь
20
Ассоциация файлов с программой Ассоциация файлов с программой, открытие нескольких файлов Ассоциация файлов с моей программой на C#
Ассоциация файлов со своей программой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|