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

Вниз

Как это делает WinAmp   Найти похожие ветки 

 
***(H@kker)*** ©   (2006-05-15 21:06) [0]

Доброго времени суток!
Есть задача: есть файл, расширение которого зарегестировано в реестре, т.е. при двойном нажатии на этот файл запускается моя прога. Так вот, как мне определить имя этого самого файла?
Подобное можно наблюдать, когда кликаеш на мр3-файл - запускается WinAmp и проигрывает именно этот файл.
Пожалуйста помогите!


 
antonn ©   (2006-05-15 21:11) [1]

файл:=paramstr(1)
ЗЫ программа запускается в этом случае с параметром, в котором файл (или несколько)


 
***(H@kker)*** ©   (2006-05-15 21:18) [2]

файл:=paramstr(1)
___________________
Какому именно файлу присвоить данное значение?
Файл Один.


 
antonn ©   (2006-05-15 21:21) [3]

ладно, попробуем по другому...
имя_файла_которым_"запустили"_программу:=paramstr(1)


 
antonn ©   (2006-05-15 21:23) [4]

или нет, лучше так:
caption:=paramstr(1); //вставь код и запусти свою программу через клик по файлу с зарегестрированным расширением.


 
***(H@kker)*** ©   (2006-05-15 21:26) [5]

Все работает!
Огромное спасибо!!!


 
ychenick ©   (2006-05-17 00:59) [6]

Да, но если путь к файлу будет: C:\Моя Любимая папка\File.mp3, то работать не будет =( , т.к. paramstr(1) будет равен только C:\Моя, а paramstr(2)=Любимая, ...

Используем более универсальную ф-цию:

if (ParamCount > 0) then
begin
 FileName:=ParamStr(1);
 for i:=2 to ParamCount do
 begin
  FileName:= FileName +" "+ParamStr(i);
 end;


ParamCount-стандартная ф-ция. Результат в FileName, причем в сокращенном виде, типа C:\Моя Лю~\Fi~.mp3, но это большой роли не должно играть.Для ОС эти пути эквиваленты. А если хош превести к нормальному виду:


Function LongFileName(ShortName: String): String;
Var
 SR: TSearchRec;

Begin
 Result := "";
 If (pos ("\\", ShortName) + pos ("*", ShortName) +
     pos ("?", ShortName) <> 0) Or Not FileExists(ShortName) Then
 Begin
 Result :=ShortName;
   { ignore NetBIOS name, joker chars and invalid file names }
   Exit;
 End;
   Result := "";
 While FindFirst(ShortName, faAnyFile, SR) = 0 Do
 Begin
   { next part as prefix }
   Result := "\" + SR.Name + Result;
   SysUtils.FindClose(SR);  { the SysUtils, not the WinProcs procedure! }
   { directory up (cut before "\") }
   ShortName := ExtractFileDir (ShortName);
   If length (ShortName) <= 2 Then
   Begin
     Break;  { ShortName contains drive letter followed by ":" }
   End;
 End;
 Result := ExtractFileDrive (ShortName) + Result;
end;


Удачи!


 
Джо ©   (2006-05-17 01:30) [7]

> [6] ychenick ©   (17.05.06 00:59)

Для того, чтобы не было подобных извращений, коммандная строка (%1) в реестре прописывается, заключенной в кавычки.



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

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

Наверх




Память: 0.48 MB
Время: 0.039 c
15-1146824709
iamdanil
2006-05-05 14:25
2006.06.04
Пополнение кошелька с мобильного телефона


6-1138449644
newprogrammer
2006-01-28 15:00
2006.06.04
ftp клиент своими руками


2-1147761317
DimonS
2006-05-16 10:35
2006.06.04
SQL+Sum()


9-1131057224
JUS
2005-11-04 01:33
2006.06.04
Помогите со стрельбой:((( немогу блин сделать


15-1146928718
ArtemESC
2006-05-06 19:18
2006.06.04
SetLength, Trim в BP