Подскажите как решить вот такую задачу:
1. Есть три типа файлов с разными расширениями, необходимо что бы при двойном клике на этих файлах запускалась моя программа и для определенного расширения делались определенные действия. Как "привязать" расширения к моей программе? Интересует именно программный способ, т.е. при первом запуске программы на машине пользователя такой привязки нет, но она должна появляется по умолчанию после первого запуска.
2. В программе есть чек-бокс который должен отключать и включать такую "привязку".
maximak wrote:
> Подскажите как решить вот такую задачу: > 1. Есть три типа файлов с разными расширениями, необходимо что бы при > двойном клике на этих файлах запускалась моя программа и для > определенного расширения делались определенные действия. Как "привязать" > расширения к моей программе? Интересует именно программный способ, т.е. > при первом запуске программы на машине пользователя такой привязки нет, > но она должна появляется по умолчанию после первого запуска. > 2. В программе есть чек-бокс который должен отключать и включать такую > "привязку".
CWinApp::RegisterShellFileTypes
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
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
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
>> 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>На русский что-ли перевести?
Большое спасибо, уже перевел, только я так и не понимаю, где же нужно указать какие именно расширения мне нужны....
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
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, 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, которая и читает эти строки из ресурсов и регистрирует их в реестре.
Здравствуйте, 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, которая и читает эти строки из ресурсов и регистрирует их в реестре.
Тепрь ясно. Спасибо.
А убирать или добавлять "привязку" по ходу работы программы. можно только непосредствено чистя реестр или добавляя туда необходимую запись?