![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| gif0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 6.11.2009 Репутация: нет Всего: нет |
Допустим, я написал программу для просмотра изображений. Как сделать так, что бы после двойного клика по изображению (jpg, png, gif и т.п.) в проводнике его открывала именно моя программа? Т.е. как связать программу с определенными расширениями файлов? Насколько я понял, это делается через реестр, но у меня не вышло. Пожалуйста, покажите пример кода.
Добавлено через 3 минуты и 43 секунды Я пробовал вот этот код, но не работает:
Так же пробовал с помощь консольных команд assoc и ftype. system("assoc .txt=txtfile"); system("ftype txtfile=\"D:\\Софт\\Notepad++\\notepad++.exe \"%1\""); Но через них вышло сделать ассоциацию только с .txt, с .jpg не вышло. Это сообщение отредактировал(а) gif0 - 11.2.2010, 18:29 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| gif0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 6.11.2009 Репутация: нет Всего: нет |
jonie, спасибо, но я юзаю C++ Builder, а этот класс написан под VC++ (естественно, у меня не компилится). Пытался разобраться, но что-то не вышло.
Так что проблема остается. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
gif0, поищите в разделе C++ Builder. Я как-то писал про это 100%
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
gif0, держи: ссылка.
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| gif0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 6.11.2009 Репутация: нет Всего: нет |
artsb, спасибо! Завтра протестирую.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Не поленился потратил на тебя 5 минут и переписал класс отсюда http://www.codeproject.com/KB/shell/cgfiletype.aspx
Это сообщение отредактировал(а) Dem_max - 12.2.2010, 09:54 Присоединённый файл ( Кол-во скачиваний: 3 )
cgfiltyp.zip 2,45 Kb-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| gif0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 6.11.2009 Репутация: нет Всего: нет |
Dem_max, подключил, скомпилировалось без ошибок. После этого пишу в конструкторе:
У меня не работает. Может ты у себя на машине протестируешь, а потом напишешь, что вышло. Я подозреваю, что у меня этот код не работает из-за того, что у меня win 7. Это сообщение отредактировал(а) gif0 - 12.2.2010, 16:23 |
|||
|
||||
| gif0 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 6.11.2009 Репутация: нет Всего: нет |
artsb, сделал все по твоей инструкции, вот код:
Не работает! Смотрел в реестре, там все создалось по твоей инструкции! Пожалуйста, протестируйте у себя. Это сообщение отредактировал(а) gif0 - 12.2.2010, 23:03 |
||||
|
|||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
gif0, почитайте вот эту статейку. Может поможет. Просто у меня сейчас нет времени проверять.
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| MiCr0s0fT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.9.2008 Репутация: нет Всего: нет |
Всё это отлично, если пользователь имеет повышенные привилегии ...
Пишу программу, которая работает с изображениями ... Вношу в реестр изменения. Работает без проблем и нареканий. Решил опробовать, сможет ли обычный пользователь изменить ассоциации с помощью созданной программы. Ответ - не сможет. В самом начале я писал изменения в ветвь: HKEY_CLASSES_ROOT\*имя программы*\shell\\open\command\ Запустив под юзером, понял, что таких глобальных изменений пользователь сделать не сможет. Открыл мониторинг реестра и начал смотреть, что творится в реестре, когда пользователь меняет приложение по-умолчанию. Действительно, система создаёт путь: HKEY_CLASSES_ROOT\Applications\*имя программы*\shell\open\command Всё отлично, подумал я. Но ошибся. В итоге всё равно выплывает запрет на создание веток в HKCR. Подскажите пожалуйста, как можно программно выполнить регистрацию приложения имея учётную запись типа "пользователь". Система это делает на ура. Раз руками можно сделать, то можно и программно... только как? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
В функции RegCreateKeyEx есть параметр SECURITY_ATTRIBUTE. Возможно система подставляет туда администратора, когда ты руками делаешь ассоциацию. Попробуй так же
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ключевое слово здесь система. Она сама исполняется не от имени пользователя
Поищите тут -
|
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |