|
2 / 2 / 1
Регистрация: 24.03.2010
Сообщений: 121
|
|
Ассоциация расширения файлов с программой16.04.2011, 11:25. Показов 16753. Ответов 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#
Ассоциация файлов со своей программой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|