Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Связь расширения с программой. Корректная передача пути файла.   Найти похожие ветки 

 
antonioxxx   (2006-03-18 03:41) [0]

Здравствуйте, господа профессионалы!
Разрешите обратиться к вам с таким вопросом. Я написал программку и хочу связать с ней расширение файлов "*.001".
Для этого использую следующй код:

   reg:=TRegistry.Create;
   reg.RootKey:=HKEY_CLASSES_ROOT;
   reg.LazyWrite:=false;
   reg.OpenKey(".001\shell\open\command",true);
   reg.WriteString("",Application.ExeName+" %1");
   reg.CloseKey;
   reg.OpenKey(".001\DefaultIcon",true);
   reg.WriteString("",Application.ExeName+",0");
   reg.CloseKey;
   reg.free;


Имя файла в программу передается через параметр:
If ParamStr(1)<>"" Then
 Begin
   E001.Text:=ParamStr(1);
   Eres.Text:=ExtractFilePath(ParamStr(1));
 End;


Связь между программой и расширением таким образом удается осуществить корректно, однако когда программа загружается по нажатии, скажем, на файле "1.001", то в полях Е001 и Eres путь к нему отражается в формате коротких имен, например:
C:\PROGRA~1\Borland\Delphi5\Projects\PROGJOI~1\WITHSE~1\1.001

Можно ли как-либо способом исправить это таким образом, чтобы в соответствующих полях указывался полные путь к файлу в формате Windows? Может быть ассоциацию файлов нужно производить как-то иначе? Или по другому передавать в программу имя файла?..

Заранее благодарю всех, кто откликнется! :-)


 
Германн ©   (2006-03-18 04:06) [1]

Кавычки "спасут отца русской демократии", Имхо.


 
antonioxxx   (2006-03-18 09:49) [2]

>Германн:

А куда их ... тут подевать-то? :-)


 
tesseract ©   (2006-03-18 12:22) [3]

для заданий длинных имён файлов они должны идти в кавычках

"c:\program files\.....\minekampf.exe" -run


 
DiamondShark ©   (2006-03-18 13:07) [4]


>  reg.WriteString("",Application.ExeName+" %1");

reg.WriteString("",Application.ExeName+" "%1"");


 
antonioxxx ©   (2006-03-18 13:21) [5]

Ага, все, спасибо огрномное, разобрался!!! :))

>DiamondShark:

Только на самом деле, в реестр нужно прописать и путь к программе в кавычках, как выяснилось :), т.е.

reg.WriteString("","""Application.ExeName+"" "%1"");

Просто команда "%1" не помогает :-)



Страницы: 1 вся ветка

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.054 c
1-1140819380
Dimaxx
2006-02-25 01:16
2006.04.02
Высота элемента в ListView


1-1141280201
Димон
2006-03-02 09:16
2006.04.02
запуск Оутлук с адресом из таблицы


6-1134371410
__DATA__
2005-12-12 10:10
2006.04.02
Кракозябры в теме письма.


2-1142464424
Алекс2
2006-03-16 02:13
2006.04.02
Печать активного документа


1-1141028849
SamProf
2006-02-27 11:27
2006.04.02
Запуск формы в другом потоке