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

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

Параметры командной строки [D6]


Nemas ©   (2003-02-07 08:30:00) 

Как получить параметры командной строки?

Пример: если открыть 1.txt, то он запустит блокнот.exe(ет в реестре), а блокнот.exe получит парметры командной строки и откроет файл 1.txt


Nemas   (2003-02-07 11:12:00) [1]

>Anatoly Podgoretsky © (07.02.03 10:29) Так в реестре и смотреть для .txt файлов<
>alena.svt (07.02.03 10:57)
На функцию, она вернет тебе того кто отвечает за зарегистррированные расширения
Только что тебе это даст?<


Мда, за функцию спасибо(в будущем пригодится), я ж вроде все понятно написал, мне нужны были парметры команной строки (теперь уже не нужны, Song ответил на мой вопрос), а реестр с txt я для примеро привел, чтоб было понятно (а получилось как всегда) ;)


alena.svt   (2003-02-07 10:57:00) [2]

На функцию, она вернет тебе того кто отвечает за зарегистррированные расширения

{****************GetAssociatedProgram*********************************}
// Узнаем какая программа отвечает за расширения файла
// Пример Caption:=GetAssociatedProgram("TXT");
// Если за расширение никто не отвечает вернет пустую строку
function GetAssociatedProgram(const Ext: String): String;
var
{$IFDEF WIN32}
reg: TRegistry;
s: string;
{$ELSE}
WinIni: TIniFile;
WinIniFileName: array[0..MAX_PATH] of Char;
s: string;
{$ENDIF}
begin
{$IFDEF WIN32}
s := "";
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
if reg.OpenKey("." + ext + "\shell\open\command",
False) <> False then
begin
s := reg.ReadString("");
reg.CloseKey;
end
else
begin
if reg.OpenKey("." + ext,
False) <> False then
begin
s := reg.ReadString("");
reg.CloseKey;
if s <> "" then
begin
if reg.OpenKey(s + "\shell\open\command",
False) <> False then

s := reg.ReadString("");
reg.CloseKey;
end;
end;
end;

if Pos("%", s) > 0 then
Delete(s, Pos("%", s), Length(s));
if ((Length(s) > 0) and
(s[1] = """)) then
Delete(s, 1, 1);
if ((Length(s) > 0) and
(Pos(""", s) > 0)) then
Delete(s, Pos(""", s), Length(s));
while ((Length(s) > 0) and
(s[Length(s)] = #32)) do
Delete(s, Length(s), 1);
{$ELSE}
GetWindowsDirectory(WinIniFileName, SizeOf(WinIniFileName));
StrCat(WinIniFileName, "\win.ini");
WinIni := TIniFile.Create(WinIniFileName);
s := WinIni.ReadString("Extensions",ext,"");
WinIni.Free;

if Pos(" ^", s) > 0 then
Delete(s, Pos(" ^", s), Length(s));
{$ENDIF}
Result := s;
end;



Только что тебе это даст?


Anatoly Podgoretsky   (2003-02-07 10:29:00) [3]

Так в реестре и смотреть для .txt файлов


Nemas   (2003-02-07 10:23:00) [4]

> alena.svt (07.02.03 08:42)

> А по понятней можно , а то блокнот с файлом запустили и чего надо то?(Уже запущено и открыто зачем второй раз открывать)

Эт я пример привел, допустим есть файл 1.txt, формат файлов txt в реестре зарегестрирован для приложения Notepad.exe и при открытии (dlclick по файлу в винде) любого файла формата *.txt сначало запускается Notepad.exe, он (Notepad.exe) проверяет командную строку и "видит" там имя файла который нуджно открыть и открывает :) Вот я и спрашивал как посмотреть параметры командной строки<

>Song © (07.02.03 08:51)
Спасибо!<




Song   (2003-02-07 08:51:00) [5]

ParamStr()


alena.svt   (2003-02-07 08:42:00) [6]

А по понятней можно , а то блокнот с файлом запустили и чего надо то?(Уже запущено и открыто зачем второй раз открывать)


Наверх

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