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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2011, 21:50   #1
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Доброго времени суток.
Как можно реализовать открытие файла через мое приложение, написанное в Delphi? Правый клик на файле » Открыть через » MyProgram.exe - в целом, это работает, но на простом запуске приложения это заканчивается. Как обработать эту процедуру открытия? (должно быть что-то похожее на WMDropFiles, как я понимаю). Уверен, это можно как-то реализовать.

Заранее спасибо.

Пытался через реестр и командную строку. С последним получилось получить путь открываемого файла, но не могу правильно обработать событие именно возникающее при "Открыть с помощью..." (пока что действия выполняются на OnCreate формы, это не правильно).

Примеры с реестром понятны, но ими не получается реализовать желанное.
Делаю так:
Код:
var reg : TRegistry;
begin
   reg:=TRegistry.Create;
   Reg.RootKey:=HKEY_CLASSES_ROOT;
   reg.OpenKey('.html', true);
   reg.WriteString('','htmlfile');
   reg.CloseKey;
   reg.CreateKey('html'+'MyApp');
   reg.OpenKey('htmlfile\DefaultIcon', true);
   reg.WriteString('',Application.ExeName+',0?');
   reg.CloseKey;
   reg.OpenKey('htmlfile\shell\open\command',true);
   reg.WriteString('',Application.ExeName+'"%1?');
   reg.CloseKey;
   reg.Free;
end;
Не работает. Ошибка: Failed to set data for "". Что я делаю не так?

Последний раз редактировалось Stilet; 14.08.2011 в 17:10.
kettanaito вне форума Ответить с цитированием
Старый 13.08.2011, 00:43   #2
Leo08
Delphi master
Пользователь
 
Аватар для Leo08
 
Регистрация: 28.05.2011
Сообщений: 96
По умолчанию

При открытии файла через программу, ей передается в качестве параметра имя этого файла. То есть
Код:
Procedure OnCreate;
Begin
If paramcount>0 then
// имя Вашего файла будет в ParamStr(1);
End;
БЯЯЯГГАААААА
Leo08 вне форума Ответить с цитированием
Старый 13.08.2011, 01:14   #3
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

В соседней теме http://programmersforum.ru/showthread.php?t=162930 обсуждаем похожее.
Anfall вне форума Ответить с цитированием
Старый 13.08.2011, 16:24   #4
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Leo08, точно.. Совсем не обратил внимание на параметры. Спасибо Вам огромное, все работает просто прекрасно!

Anfall, да, уже читаю, спасибо.

Еще бы через реестр разобраться как привязать веб-форматы к приложению...

Последний раз редактировалось Stilet; 14.08.2011 в 17:11.
kettanaito вне форума Ответить с цитированием
Старый 14.08.2011, 01:47   #5
gesper
Пользователь
 
Аватар для gesper
 
Регистрация: 02.04.2011
Сообщений: 17
По умолчанию

А как работают программы в которых при открытии файла, с расширением привязанным к программе, вместо копии программы открывается новая вкладка в уже запущеном экземпляре?
gesper вне форума Ответить с цитированием
Старый 14.08.2011, 01:58   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проверяет есть ли запущенный экземпляр программы, если есть - передает ему имя файла, а сама закрывается. Запущенный экземпляр создает новую вкладку. Возможны вариации
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2011, 02:40   #7
gesper
Пользователь
 
Аватар для gesper
 
Регистрация: 02.04.2011
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Проверяет есть ли запущенный экземпляр программы, если есть - передает ему имя файла, а сама закрывается. Запущенный экземпляр создает новую вкладку. Возможны вариации
Вот как в таких случаях передают данные и как копии сообщают, что надо бы открыть\проверить не надо ли что открыть?
Переменная и обработка сообщений в окно?
gesper вне форума Ответить с цитированием
Старый 15.08.2011, 14:54   #8
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Вопрос слишком отличается от темы топика. Создам новый.

Последний раз редактировалось kettanaito; 15.08.2011 в 15:46.
kettanaito вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие графического файла, через FileDialog Ker_33rus Общие вопросы по Java, Java SE, Kotlin 1 26.12.2010 15:26
Свернуть програму при запуске через PI.dwProcessId Человек_Борща Общие вопросы Delphi 4 22.09.2010 11:03
Открытие файла и создание графика на основе чисел из файла Simon..14 Общие вопросы C/C++ 8 09.06.2009 10:18
Управление свою програму через cmd, program.exe /sillent andreibtzt Общие вопросы Delphi 3 05.05.2009 20:47
как запустить програму при перетаскивание на неё файла SeRhy Общие вопросы Delphi 3 09.01.2008 23:12