Как привязать расширение файла к программе
От: maximak  
Дата: 05.10.06 08:09
Оценка:
Подскажите как решить вот такую задачу:
1. Есть три типа файлов с разными расширениями, необходимо что бы при двойном клике на этих файлах запускалась моя программа и для определенного расширения делались определенные действия. Как "привязать" расширения к моей программе? Интересует именно программный способ, т.е. при первом запуске программы на машине пользователя такой привязки нет, но она должна появляется по умолчанию после первого запуска.
2. В программе есть чек-бокс который должен отключать и включать такую "привязку".
Re: Как привязать расширение файла к программе
От: kan Великобритания  
Дата: 05.10.06 08:14
Оценка:
maximak wrote:

> Подскажите как решить вот такую задачу:

> 1. Есть три типа файлов с разными расширениями, необходимо что бы при
> двойном клике на этих файлах запускалась моя программа и для
> определенного расширения делались определенные действия. Как "привязать"
> расширения к моей программе? Интересует именно программный способ, т.е.
> при первом запуске программы на машине пользователя такой привязки нет,
> но она должна появляется по умолчанию после первого запуска.
> 2. В программе есть чек-бокс который должен отключать и включать такую
> "привязку".
CWinApp::RegisterShellFileTypes
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Как привязать расширение файла к программе
От: maximak  
Дата: 05.10.06 08:24
Оценка:
kan>CWinApp::RegisterShellFileTypes

Так а как указать файлы с каким именно расширением должна открывать моя программа?
Re[3]: Как привязать расширение файла к программе
От: kan Великобритания  
Дата: 05.10.06 11:09
Оценка:
maximak wrote:

> kan>CWinApp::RegisterShellFileTypes

> Так а как указать файлы с каким именно расширением должна открывать моя
> программа?

RegisterShellFileTypes iterates through the list of CDocTemplate objects that the application maintains and, for each
document template, adds entries to the registration database that Windows maintains for file associations.
(c) MSDN, CWinApp::RegisterShellFileTypes

На русский что-ли перевести?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: Как привязать расширение файла к программе
От: maximak  
Дата: 05.10.06 11:44
Оценка:
>> kan>CWinApp::RegisterShellFileTypes
>> Так а как указать файлы с каким именно расширением должна открывать моя
>> программа?
kan>

RegisterShellFileTypes iterates through the list of CDocTemplate objects that the application maintains and, for each
kan>document template, adds entries to the registration database that Windows maintains for file associations.
kan>(c) MSDN, CWinApp::RegisterShellFileTypes

kan>На русский что-ли перевести?

Большое спасибо, уже перевел, только я так и не понимаю, где же нужно указать какие именно расширения мне нужны....
Re[5]: Как привязать расширение файла к программе
От: kan Великобритания  
Дата: 05.10.06 12:15
Оценка:
maximak wrote:

> RegisterShellFileTypes iterates through the list of CDocTemplate objects

> that the application maintains and, for each
> kan>document template, adds entries to the registration database that
> Windows maintains for file associations.
> kan>(c) MSDN, CWinApp::RegisterShellFileTypes
> kan>На русский что-ли перевести?
> Большое спасибо, уже перевел, только я так и не понимаю, где же нужно
> указать какие именно расширения мне нужны....
Может просто надо научиться читать? Жмём ссылку CDocTemplate и читаем:

The document template also has strings containing additional information about its document type. These include the
name of the document type (for example, "Worksheet") and the file extension (for example, ".xls").

Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: Как привязать расширение файла к программе
От: febus Германия  
Дата: 05.10.06 12:28
Оценка:
Здравствуйте, kan, Вы писали:
>> Большое спасибо, уже перевел, только я так и не понимаю, где же нужно
>> указать какие именно расширения мне нужны....
kan>Может просто надо научиться читать? Жмём ссылку CDocTemplate и читаем:
kan>

The document template also has strings containing additional information about its document type. These include the
kan>name of the document type (for example, "Worksheet") and the file extension (for example, ".xls").



Перед тем, как вы подеретесь:
В InitInstance есть такие строки:
pDocTemplate = new CMultiDocTemplate(IDR_RegExtTYPE, //У тебя она будет называться иначе
        RUNTIME_CLASS(CRegExtDoc),
        RUNTIME_CLASS(CChildFrame), // Benutzerspezifischer MDI-Child-Rahmen
        RUNTIME_CLASS(CRegExtView));



Интерес представляет константа IDR_RegExtTYPE. Посмотри на нее в редакторе ресурсов.
Она имеет следуюший вид:
\nRegExt\nRegExt\nRegExt Files (*.abc)\n.abc\nRegExt.Document\nRegExt.Document

В данном случае расширение abc будет ассоциировано с твоей программой.
Т.о. если у тебя несколько документов в программе, ты можешь присвоить себе несколько расширений.
При запуске программы, а именно при выполнении CWinApp::RegisterShellFileTypes
вызывается в функция CDocTemplate::GetDocString, которая и читает эти строки из ресурсов и регистрирует их в реестре.
Re[7]: Как привязать расширение файла к программе
От: maximak  
Дата: 05.10.06 12:46
Оценка:
Здравствуйте, febus, Вы писали:

F>Здравствуйте, kan, Вы писали:

>>> Большое спасибо, уже перевел, только я так и не понимаю, где же нужно
>>> указать какие именно расширения мне нужны....
kan>>Может просто надо научиться читать? Жмём ссылку CDocTemplate и читаем:
kan>>

The document template also has strings containing additional information about its document type. These include the
kan>>name of the document type (for example, "Worksheet") and the file extension (for example, ".xls").



F>Перед тем, как вы подеретесь:

F>В InitInstance есть такие строки:
F>
F>pDocTemplate = new CMultiDocTemplate(IDR_RegExtTYPE, //У тебя она будет называться иначе
F>        RUNTIME_CLASS(CRegExtDoc),
F>        RUNTIME_CLASS(CChildFrame), // Benutzerspezifischer MDI-Child-Rahmen
F>        RUNTIME_CLASS(CRegExtView));
F>



F>Интерес представляет константа IDR_RegExtTYPE. Посмотри на нее в редакторе ресурсов.

F>Она имеет следуюший вид:
F>\nRegExt\nRegExt\nRegExt Files (*.abc)\n.abc\nRegExt.Document\nRegExt.Document

F>В данном случае расширение abc будет ассоциировано с твоей программой.

F>Т.о. если у тебя несколько документов в программе, ты можешь присвоить себе несколько расширений.
F>При запуске программы, а именно при выполнении CWinApp::RegisterShellFileTypes
F>вызывается в функция CDocTemplate::GetDocString, которая и читает эти строки из ресурсов и регистрирует их в реестре.

Тепрь ясно. Спасибо.

А убирать или добавлять "привязку" по ходу работы программы. можно только непосредствено чистя реестр или добавляя туда необходимую запись?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.