|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2008, 14:30 | #1 |
Пользователь
Регистрация: 03.09.2007
Сообщений: 14
|
Открыть с помощью...
Как сделать, что бы нажимая на файл он открывался моей программой?
|
10.03.2008, 14:42 | #2 |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
Нажимаете правой кнопкой по файлу, выбираете "Свойства" далее слева увидите написано "приложение" - там справа есть кнопка изменить... Нажимаете на нее, и выбираете exe файл вашей программы... Далее жмите "ОК" И теперь все файлы этого типа будут открываться через вашу программу...
Последний раз редактировалось Rembo; 10.03.2008 в 14:44. |
10.03.2008, 14:47 | #3 |
Пользователь
Регистрация: 03.09.2007
Сообщений: 14
|
В программе есть таблица данные в которую загружаются из таблиц Excel с помощью кнопки открыть. Как сделать чтобы можно было загружать данные в программу нажимая на файлах .xls?
|
10.03.2008, 16:27 | #4 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
http://samouchka.net/2007/03/17/asso...khnologii.html
Многие пытались, а может и не пытались ассоциировать файлы, чтобы собственная программа не просто создавала файлы с непонятным ярлыком, а чтобы там отображался фрагмент ярлыка создателя программы, или ещё лучше, отдельно созданный ярлык... Впрочем задача перед программистом стояла сделать эту ассоциацию по всем законам как положено (как у word, excel да впрочем всех известных фирм-производителей программного обеспечения (ПО)). Вот и мы столкнулись в команде нашей с этой казалось бы простой проблемой. Пишем проги, а ассоциировать файлы не можем. Простая ассоциация через инсталлятор (wise, installshield, vise и другие) осуществляется без проблем: щёлкнул мышкой и написал параметры скрипта и всё ассоциировал. Но ведь это полбеды! Подобная ассоциация обеспечит Вам только открытие приложения, с которым было выполнено данное действо. А хотелось, чтобы два раза щёлкнул по документу, созданного в своей проге и запустилось приложение с ЗАГРУЖЕННЫМ файлом - т.е. открылся файл данных. Многие программисты скажут - это просто, что там делать-то, раз плюнуть, а некоторые говорят - "А оно Мне надо". Проблемы может и нет, а в документациях мы ничего не нашли толкового, только обрывки истины и всё... Ну, ладно, это всё была прелюдия, а теперь будет сама опера. Задачу эту мы решили в течение 3-х часов без учёта того, что читали различную документацию целый год! Смешно, но зато сами дошли до всего и можем теперь с гордостью сказать, что мы знаем прекрасно эту сторону вопроса. Итак... Мы программируем на delphi, но думаем, что в остальных средах разработки всё тоже самое. В delphi есть такой класс tregistry описывать который мы не будем, почитайте хэлп и всё. У модуля windows есть функция getlinecommand, которая отвечает за состояние специального регистра памяти, в который (при запуске ассоциированного документа или самого приложения) записывается командная строка - точнее полный путь к месту приложения или документа. Разъяснять на пальцах более не будем, а перейдём конкретно к примеру: Листинг 1. Работа с классом tregistry в delphi {Прописка реестра} var reg: tregistry; …………………. 1 begin 2 reg:=tregistry.create; {создаём переменную класса} 3 reg.rootkey:=hkey_classes_root; {определяем имя активного раздела} 4 reg.createkey('.cid'); {определяем расширение файла, созданного из-под нашего приложения} 5 reg.openkey('.cid',true); {Открываем ключ с расширением и редактируем} 6 reg.writestring('','cool.document') ; {прописываем строку значения} 7 reg.closekey; {закрываем активный ключ} 8 reg.createkey('cool.documentshellop encommand');{создаём новый ключ} 9 reg.openkey('cool.documentshellopen command',true); 10 reg.writestring(' ', inputstring+'myapp.exe "%1"'); {прописываем путь к приложению с параметром %1, о котором скажем позже} 11 reg.closekey; {закрываем ключ} 12 reg.createkey('cool.documentdefault icon'); {создаём новый ключ} 13 reg.openkey('cool.documentdefaultic on',true); {разрешаем редактирование и открываем его} 14 reg.writestring(' ', inputstring+'icon.ico,0'); {прописываем путь к иконке нашего регистрируемого документа} 15 reg.closekey; {закрываем ключ} 16 end; В 10-ой строке есть параметр %1, который означает что при реализации метода getlinecommand вместе с путём к приложению будет в кавычках отражаться полный путь к документу, на котором щёлкнули. В строке 14 можно прописать параметр reg.writestring(' ', inputstring+'myapp.exe,1'). Тогда не нужна никакая иконка отдельно созданная, а ассоциированная иконка будет иметь вид загнутого листика с уменьшенной по средине него иконкой Вашего exe-файла. Вот реестр мы настроили, а как быть с обработкой строки, полученной после реализации метода getlinecommand? Мы решили эту проблему абсолютно несложным кодом, состоящего из готовеньких функций работы со строками! Листинг 2. Обработка командной строки, полученной с помощью метода getlinecommand (модуль windows) s:=ansistrscan(windows.getcommandli ne,'"'); {перевод указателя на заданный символ в командной строке, а именно "} ss:=ansiextractquotedstr(s,'"'); {избавляемся от кавычек в командной строке и получаем "чистый" путь к файлу данных} load этот файл как угодно… и всё! Данный метод реализовать нужно либо на событие create, show или на что-то родственное, что обрабатывается первым |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Windows Открыть с помощью не работает | AnageN | Windows | 3 | 02.08.2010 18:22 |
открыть с помощью | tarasov | Win Api | 3 | 13.12.2007 19:00 |
Как с помощью Delphi открыть/сохранить/удалить текстовый документ | SeRhy | Помощь студентам | 4 | 02.11.2007 20:27 |
Выбор программы или Открыть с помощью | Умелец | Свободное общение | 7 | 14.07.2007 21:17 |