Открыть файл моим приложением

  • Автор темы mariner
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

mariner

Как открыть файл моим приложением через меню 'Открыть с помощью'. А то просто грузится программа, а файл не открыет.
 
M

mariner

и еще, как делать такие кнопки как в ХР? То есть, которые изменяются со стилями
 
B

Barmutik

В винде реализован механизм ассоциации расширения файла с той программой которая её открывает.

Если такая ассоциация есть то можно просто выполнить ShellExecute('open', ....) и система сама запустит требуемое приложение для открытия указанного файла.

Если вам требуется что бы Ваша программа открывала файлы определённого типа Вам всего лиш требуется переписать ассоциацию для файла этого типа в реестре.

Вот пример для htmlfile:

Код:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\htmfile]

[HKEY_CLASSES_ROOT\htmfile\shell]
@="XXX"

[HKEY_CLASSES_ROOT\htmfile\shell\XXX]

[HKEY_CLASSES_ROOT\htmfile\shell\XXX\command]
@="\"D:\\XXX\\XXX.exe\" \"%1\""
 
B

Barmutik

Для того что бы аши кнопки поддерживали стили в XP они должны удовлетоворять спецификации Microsoft по поддержке Visual Styles... подробнее вагон информации в интернете или в MSDN.

И вопрос: а чем Вас не устраивают стандратные кнопки? Они по умолчанию поддерживают стили...

А если Вам надо такие же кнопки в любой операционке то скачайте набор компонент Raise ... грамотный набор компонент, который в операционной системе отличной от ХР эмулирует её стиль отрисовки.
 
M

mariner

Barmutik, вы меня неправильно поняли. Допустим, у меня есть блокнот(моя прога) и есть txt-файл. Я нажимаю правой кнопкой "Открыть с помощью" и выбираю свою прграмму. Нажав, загружается программа, но не открывая txt-файл.
 
B

Barmutik

Ааа... да понял не так... а как у Вас насчёт обработки параметров командной строки?

В них и должен быть передан Вашему приложению имя файла которое требуется открыть...
 
G

Guest_mariner

во-во, только как споймать эти параметры?

Насчет кнопок XP:
достаточно создать файл имя_исполняемого_файла.exe/manifest и вставить в него следующий код

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>


заменив нужные части на свои и положить в папку с программой
 
Z

zubr

Guest_mariner

во-во, только как споймать эти параметры?

Надо сделать что то типа этого:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
If ParamStr(1)<>'' then
RichEdit1.Lines.LoadFromFile(ParamStr(1));
end;
 
B

Barmutik

ParamCount - количество параметров
Params(X) - обращение к Х параметру

0 параметр всегда путь исполняемого файла.

То что Вы привели это лиш прикомпиляция ресурсов говоряща я о том что программе надо использовать библиотеку контролов винды версии 6.0 (со стилями).

Я имел ввиду если Вы сами хотите сделать контрол поддерживающий стили XP.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!