Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2008, 14:30   #1
Влажимир
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 14
По умолчанию Открыть с помощью...

Как сделать, что бы нажимая на файл он открывался моей программой?
Влажимир вне форума Ответить с цитированием
Старый 10.03.2008, 14:42   #2
Rembo
Форумчанин
 
Аватар для Rembo
 
Регистрация: 29.10.2007
Сообщений: 628
По умолчанию

Нажимаете правой кнопкой по файлу, выбираете "Свойства" далее слева увидите написано "приложение" - там справа есть кнопка изменить... Нажимаете на нее, и выбираете exe файл вашей программы... Далее жмите "ОК" И теперь все файлы этого типа будут открываться через вашу программу...

Последний раз редактировалось Rembo; 10.03.2008 в 14:44.
Rembo вне форума Ответить с цитированием
Старый 10.03.2008, 14:47   #3
Влажимир
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 14
По умолчанию

В программе есть таблица данные в которую загружаются из таблиц Excel с помощью кнопки открыть. Как сделать чтобы можно было загружать данные в программу нажимая на файлах .xls?
Влажимир вне форума Ответить с цитированием
Старый 10.03.2008, 16:27   #4
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 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 или на что-то родственное, что обрабатывается первым
andrey4623 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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