Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Связь расширения с программой. Корректная передача пути файла. [D5, WinME, WinXP]


antonioxxx ©   (2006-03-18 03:41:00) 

Здравствуйте, господа профессионалы!
Разрешите обратиться к вам с таким вопросом. Я написал программку и хочу связать с ней расширение файлов "*.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? Может быть ассоциацию файлов нужно производить как-то иначе? Или по другому передавать в программу имя файла?..

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


antonioxxx   (2006-03-18 13:21:00) [1]

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

> DiamondShark:

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

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

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


DiamondShark   (2006-03-18 13:07:00) [2]


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

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


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

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

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


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

>Германн:

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо