Поиск:

Ответ в темуСоздание новой темы Создание опроса
> автоматически открыть файл "open with" 
V
    Опции темы
Imidazol
Дата 17.4.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



Здравствуйте!
Как автоматически открыть файл моей программой через Windows, типа "open with"?
Спасибо! 
PM MAIL   Вверх
Anikmar
Дата 17.4.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Откройте папку c файлами, Сервис-> свойства папки-> типы файлов, дальше увидите.
PM MAIL ICQ   Вверх
Imidazol
Дата 17.4.2009, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



smile Спасибо, конечно, но я имел ввиду, как, если в Windows нажимаешь open with my program, подключить в моей программе функцию, которая обрабатывает этот файл
PM MAIL   Вверх
Anikmar
Дата 17.4.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Imidazol @  17.4.2009,  22:24 Найти цитируемый пост)
 Спасибо, конечно, но я имел ввиду, как, если в Windows нажимаешь open with my program, подключить в моей программе функцию, которая обрабатывает этот файл

Вы имеете в виду командную строку как получить? Покажите заголовок функции main.
PM MAIL ICQ   Вверх
artsb
Дата 17.4.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



В OnCreate главной формы:
Код

AnsiString FilePath;
if(ParamCount() > 1)
{
  FilePath = ParamStr(1); // ParamStr(0) - путь до exe'шника
  // теперь делаете проверки, наподобии, поддерживается ли такое расширение файла
  // если все проверки прошли успешно, вызываете функцию загрузки файла
}

Это ещё не всё. Хотя уже теперь вы можете перетаскивать файлы на exe'шник и они будут открываться.
Следующий шаг регистрация своего расширения (его обычно делают инсталляторы. Либо нужно это сделать вручную в самом начале OnCreate). Это работа с реестром. Сейчас точно не помню, где нужно ключ создавать, но посмотрю.

Это сообщение отредактировал(а) artsb - 17.4.2009, 23:19


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Imidazol
Дата 17.4.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



Ну обычная из билдера. Я имею ввиду, если юзер открывает какой-то файл моей программой из Explorera, когда открывается моя прога, как узнать, что юзер пытался ею открыть файл? Где прописать и как увидеть имя этого файла при открытии и подключить к нему мной специальную функцию обработки и открытия. 
Код

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->CreateForm(__classid(TForm2), &Form2);
                 Application->CreateForm(__classid(TForm3), &Form3);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}[quote]

[/quote]


Добавлено через 1 минуту и 55 секунд
O! спасибо, не заметил, что ещё кто-то успел написать! Именно это и хотел узнать!
PM MAIL   Вверх
Anikmar
Дата 17.4.2009, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Imidazol @  17.4.2009,  23:09 Найти цитируемый пост)
Ну обычная из билдера.

Обычных из билдера много бывает - зависит от проекта. Я просто хотел узнать VCL или нет, неправильно спросил.

Там уже artsb меня опередил с ответом  smile 
PM MAIL ICQ   Вверх
artsb
Дата 17.4.2009, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Про реестр вспомнил smile

В ветке HKEY_CLASSES_ROOT\Applications создаёте раздел. Не важно как назовёте, но обычно называют так: имя_ехе.exe
В нём подраздел shell. В нём open. В нём command.
Получается такой путь:
HKEY_CLASSES_ROOT\Applications\shell\open\command
Параметр по умолчанию для command задаёте так:
"Полный путь к вашему ехе" "%1"

Теперь, непосредственно в ветке HKEY_CLASSES_ROOT создаёте раздел с именем как у вашего расширения, например:
HKEY_CLASSES_ROOT\.txt
В нём подраздел OpenWithList. А уже в нём пустой раздел с именем которое вы использовали в HKEY_CLASSES_ROOT\Applications, т.е. обычно это имя_ехе.exe

Ну вот и всё.

ЗЫ насколько помню, после всего этого нужно перезагрузиться.

Это сообщение отредактировал(а) artsb - 17.4.2009, 23:40


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
taiven
Дата 18.4.2009, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 30.6.2008

Репутация: 3
Всего: 9



Код

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

третий параметр и есть имя открываемого файла, но проще конечно использовать ParamStr(1) .
PM   Вверх
THandle
Дата 18.4.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Ну вот статейка Антона Григорьева(которая потом вошла даже в его книгу) на эту тему:

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=904
PM   Вверх
artsb
Дата 18.4.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



THandle, спасибо за статью. Познавательно.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Imidazol
Дата 20.4.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



Спасибо всем- почти со всем разобрался.

Добавлено через 37 секунд
Спасибо всем- почти со всем разобрался. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.