![]() |
|
|
![]()
|
|
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Надо зарегистрировать свой тип файлов. Суть его - заполнение некоторых исходных данных для моей программы. Наборы исходных данных могут быть разные - потому хотелось бы иметь возможность сохрнаять их в файл, и загружать снова. При этом хотелось бы зарегистрировать для своего расширения особый значок для файлов. и совсем хорошо было бы если б содержимое файла нельзя было просмотреть различного рода просмотрщиками (то есть надо чтоб информация там искажалась).
Как все это можно сделать? Если не трудно поясните, а если трудно - дайте ссылку на ресурсы, где об этом можно почитать. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Для Vista+ это делается при помощи COM объекта шела. Пример есть тут http://msdn.microsoft.com/en-us/library/bb...28VS.85%29.aspx
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
| oldcode |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
1. Напишите следующую функцию:
2. Шифруйте содержимое самый простой и достаточный для вашей цели алгоритм - XOR 2Alexeis - а в Вынь7 регистр уже отменили ? Или метод SetAppAsDefault просто не будет работать в ОС версии ниже Виста ? Это сообщение отредактировал(а) oldcode - 30.10.2010, 14:35 |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Там же написано в документе Minimum supported client - Windows Vista А на счет реестра, судя по отзывам это работать не будет. Возможно дело в в правах доступа, возможно просто изменили съему. Но знаю одно, что в Виста+ можно несколько приложений повесить на одно расширение, но лишь одно приложение будет открывать по умолчанию. Так что схема изменилась. В общем нужно проверять. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| oldcode |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
а про UAC мысль не посещала ? |
|||
|
||||
| migddk |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.10.2010 Репутация: нет Всего: нет |
Зарегистрированные расширения хранятся в реестре как ключи корневого ключа HKEY_CLASSES_ROOT. Например, если вы хотите зарегистрировать расширение .my, то должны создать в ключе HKEY_CLASSES_ROOT ключ с именем ".my". Единственным параметром этого ключа должно быть имя ключа, содержащего развернутую информацию. Например, "myfile". Указанный ключ также хранится в разделе корневого ключа HKEY_CLASSES_ROOT. В этом ключе создается цепочка ключей shell\open\command. В последнем ключе command задается параметр, значение которого - полное имя файл приложения, обрабатывающего файлы с вашим расширением. Если при запуске этого приложения в него надо через командную строку передать имя файла, то после имени приложения указываются символы "%1". Так что если, например, вы хотите обрабатывать файлы приложением MyProgram, расположенным в каталоге C:\MyProjrcts, то в реестре соответствующий параметр должен иметь вид "C:\MyProjrcts\MyProgram.exe %1". При регистрации расширения можно одновременно зарегистрировать и пиктограмму, которая будет отображаться в папках около файлов с этим расширением. Для этого в ключе, содержащем информацию о приложении (в рассматриваемом примере - в ключе myfile) надо создать подключ DefaultIcon и в нем задать параметр со значением, указывающим пиктограмму: имя файла и, после запятой, - индекс пиктограммы. Например, если вы хотите указать главную пиктограмму вашего приложения, обрабатывающего файлы, то значение этого параметра может быть следующим: " C:\MyProjrcts\MyProgram.exe, 0". В результате регистрации автоматически создастся также параметр с именем вашего приложения в ключе HKEY_CURRENT_USER \ SoftwareMicrosoft \ Windows \ ShellNoRoam \ MUICache. Это обеспечит в дальнейшем пользователю возможность назначать средствами Windows ваше приложение для обработки файлов с иным расширением. Ниже приведен пример приложения, регистрирующего расширение файлов .my и обрабатывающего эти файлы. Приложение имеет кнопку Регистрация расширения .my (ее имя BReg) и кнопку Отмена регистрации расширения (имя BUnReg). В качестве обрабатывающего приложения регистрируется это же приложение, загружающее открываемый файл в окно Memo1. В реальном случае, конечно, регистрировать и обрабатывать файлы должны разные приложения: регистрация должна проводиться программой, устанавливающей ваше приложение на компьютере. Ниже приводится код .
Особых комментариев этот код, вероятно, не требует. В реальном приложении вам надо заменить в этом коде "my" на то расширение, которое вам необходимо. Кроме того, в приведенном коде в качестве обработчика задается текущее приложение. Его имя с путем получается вызовом функции ParamStr(0). В реальном приложении это имя файла также надо заменить. Отмена регистрации, осуществляемая в процедуре BUnRegClick, сводится к стиранию ранее созданных ключей. Обработчик события формы OnCreate определяет функцией ParamCount, передан ли параметр через командную строку. Если передан, то файл, имя которого передано, загружается в окно Memo1. Подобный обработчик (конечно, не сводящийся к загрузке в Memo) должен быть вставлен в приложение, обрабатывающее файлы. Это сообщение отредактировал(а) migddk - 1.11.2010, 11:48 |
||||
|
|||||
| oldcode |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
Вы, наверное, не обратили внимания, что темой прений было, в каких версиях ОС это будет работать. |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
migddk, спасибо за развернутый ответ! Но что касается версий ОС - вопрос тоже актуальный.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Судя по документации старая схема работает вполне http://msdn.microsoft.com/en-us/library/cc...v=VS.85%29.aspx
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Еще интересная информация
А также
Т.е. грубо говоря секции HKEY_CLASSES_ROOT не существует. Более того Microsoft рекомендует использовать секцию HKEY_CLASSES_ROOT только для чтения. Однозначно что если писать в секцию HKEY_CURRENT_USER\Software\Classes, то проблем с правами не будет, потому что это секция текущего пользователя. Но в этом случае ассоциации будут работать только для этого пользователя. Иначе нужны права админа на использование HKEY_LOCAL_MACHINE\Software\Classes -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| oldcode |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
что и требовалось доказать... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
При наличии администраторских прав. А права у пользователей администраторов в Vista+ несколько другие уже. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |