Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизКак это делает 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c