Вопрос следующего плана:
Моя программа работает с файлами *.bu, ею созданными. Насколько я знаю, никакая программа больше не использует файлы такого расширения. Обычно, чтобы открыть файл, надо сделать Button1Click, тогда произойдет Opendialog1.Execute, файл откроется и информация из него считается. А как сделать так, чтобы если юзер в Эксплорере дважды кликнул на файле *.bu, тут же открылась моя программа и выполнились соответствующие действия? Как, например, дважды кликнешь по *.pdf - открывается Acrobat Reader.
Второе. Если файлы такого вида открываются не только моей программой (например, текстовым редактором), но и другими, можно ли как-нибудь встроить мою программу в меню "Открыть с помощью..." или в само контекстное меню файла?
Спасибо за внимание
Открывать файлы в моей программе по двойному клику
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Нужно программно (при первом запуске, например) добавить соответствующую информацию в реестр по адресу: "Software\Microsoft\Windows\CurrentVersion\FileAssociation".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Уважаемый Ромео, возможно, имелась в виду ветвь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileAssociation?
И потом, какой должна быть "соответствующая информация"?
Я так посмотрел в реестре ассоциацию для txt-файла - там написано "C:\Windows\Notepad.exe %1". Вот как объяснить моей программе, что %1 - это когда после Button1Click произошло выполнение Opendialog1?
И потом, какой должна быть "соответствующая информация"?
Я так посмотрел в реестре ассоциацию для txt-файла - там написано "C:\Windows\Notepad.exe %1". Вот как объяснить моей программе, что %1 - это когда после Button1Click произошло выполнение Opendialog1?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Это в советах от Кулибы (может быть и прокатит, больно уж старый совет) :
В основном вам необходимо добавить два ключа в улей регистра HKEY_CLASSES_ROOT. Зарегистрируете в корне ваше расширение типа ".ext" (создаете ключ с именем расширения):
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
.ext\
и запишите в строке "default" созданного ключа "внутреннее имя" вашего типа файлов - например, MyApp.Document:
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
.ext\
Default = "MyApp.Document"
Затем создайте другой ключ с этим именем:
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
MyApp.Document\
Создайте подключ с именем "shell", в нем другой подключ с именем "open" и в "open", в свою очередь, еще один подключ с именем "command". Значение по умолчанию (default) - путь и имя вашего приложению с ключом "%1", представляющим параметр "имя файла", позволяя системе подставлять подставлять вызванный файл:
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
MyApp.Document\
shell\
open\
command\
Default = "C:\myapp\myapp.exe %1"
Все манипуляции в коде производятся с помощью объекта TRegistry или при использовании InstallShield, который сделает это за вас автоматически. Я должен посоветовать вам использовать оба пути, поскольку пользователь может внести в регистры всякий мусор.
В основном вам необходимо добавить два ключа в улей регистра HKEY_CLASSES_ROOT. Зарегистрируете в корне ваше расширение типа ".ext" (создаете ключ с именем расширения):
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
.ext\
и запишите в строке "default" созданного ключа "внутреннее имя" вашего типа файлов - например, MyApp.Document:
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
.ext\
Default = "MyApp.Document"
Затем создайте другой ключ с этим именем:
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
MyApp.Document\
Создайте подключ с именем "shell", в нем другой подключ с именем "open" и в "open", в свою очередь, еще один подключ с именем "command". Значение по умолчанию (default) - путь и имя вашего приложению с ключом "%1", представляющим параметр "имя файла", позволяя системе подставлять подставлять вызванный файл:
--------------------------------------------------------------------------------
HKEY_CLASSES_ROOT\
MyApp.Document\
shell\
open\
command\
Default = "C:\myapp\myapp.exe %1"
Все манипуляции в коде производятся с помощью объекта TRegistry или при использовании InstallShield, который сделает это за вас автоматически. Я должен посоветовать вам использовать оба пути, поскольку пользователь может внести в регистры всякий мусор.
бросай курить , вставай на лыжи и вместо рака будет грыжа...
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
При старте своей программы проверять ParamCount, и вообще глянуть хелп на ParamCount и ParamStrХыиуду писал(а):Вот как объяснить моей программе, что %1 - это когда после Button1Click произошло выполнение Opendialog1?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
"%1" еще не забывайте в двойные кавычки заключать, иначе, если строка пути к файлу содержит пробелы, то получится лажа: Paramstr вернет путь по частям.