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

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

Программа открывающая файл [D7, WinXP]


Cj ©   (2007-04-28 08:06:00) 

Всех категорически приветствую! Как можно узнать путь программы которая открывает данный файл. ShellExecute - находит а как найти мне?


Сергей М.   (2007-04-28 10:58:00) [1]


> как знать что они не в пути программы


Ну ты просмотри несколько таких записей в реестре и определи закономерность - в чем проблема-то ?

Правил не так уж и много:

1. Пути, содержащие пробелы, заключается в кавычки
2. Пути в ком.строках отделяются от параметров пробелами.
3. Если параметр начинается с %, то он подстановочный.
4. Системные переменные в пути, например, SystemRoot, справа и слева обрамляются символами %


Cj   (2007-04-28 10:33:00) [2]

Можно конечно поудалять все эти символы, но как знать что они не в пути программы


Cj   (2007-04-28 10:32:00) [3]

И еще вопрос: когда нахожу прогу она там с параметрами или EXPAND-ная (как эту раскрыть знаю), а как избавить ся от (",%1) параметров, чтобы найти чистый путь?


Cj   (2007-04-28 10:28:00) [4]


> > путь к нему не найтиЧто значит "не найти" ?Где, что и
> как ищешь - показывай ...


Всмысле к чему? Спасибо.
Вот щас ф-ю сбацал если кому надо:

function getfileprogram(s: string): string;
var
ext,extname,progpath:string;
begin
if (lowercase(extractfilename(s))='.exe')or
  (lowercase(extractfilename(s))='.com')then
  result:=s else
  begin
       ext:=extractfileext(s);
       with TRegistry.Create(key_read)do
       begin
            rootkey:=HKEY_CLASSES_ROOT;
            if openkey(ext,false)=true then
               begin
                    extname:=readstring('');
                    closekey;
                    if openkey(extname+'\shell\open\command',false)=true then
                       begin
                            progpath:=readstring('');
                            closekey;
                            result:=progpath;
                       end else result:='';
            end else result:='';
            free;
       end;
  end;
end;


Сергей М.   (2007-04-28 10:26:00) [5]


> путь к нему не найти


Что значит "не найти" ?
Где, что и как ищешь - показывай ...


Cj   (2007-04-28 10:23:00) [6]


> > BRED2 открывает .txtЧто еще за "бред" ?> как добавить
> во все типы файлов свой пункт


Да , понял, только что это сделал. А BRED2 это замена блокноту


Сергей М.   (2007-04-28 10:11:00) [7]


> BRED2 открывает .txt


Что еще за "бред" ?


> как добавить во все типы файлов свой пункт


Куча статей в Тырнете на эту тему)


Cj   (2007-04-28 09:43:00) [8]


> Сергей М. ©   (28.04.07 08:57) [4]


Да, этим способом сам делал. Но например BRED2 открывает .txt и этим способом путь к нему не найти- вот в чем прикол. И подскажите еще- как добавить во все типы файлов свой пункт, добавлял только к определенным а так-нет, но WINRAR - же добавляет, разбирался, так и не разобрался


Fredy314   (2007-04-28 09:16:00) [9]

поправочка, имейте ввиду подключ \Shell\Open\command может быть указан сразу для расширения файла.


Сергей М.   (2007-04-28 08:57:00) [10]


> как мне определить программу зарегестрированную под определенный
> тип файла?


Вот последовательность действий на примере dpr-файлов:

1. Ищешь и открываешь ключ реестра
HKEY_CLASSES_ROOT\.dpr

2. Читаешь из него значение по умолчанию
DelphiProject

3. Ищешь и открываешь ключ реестра
HKEY_CLASSES_ROOT\DelphiProject

4. Открываешь подключ
HKEY_CLASSES_ROOT\DelphiProject\Shell\Open\command

5. Читаешь в нем знечение по умолчанию
C:\Program Files\Borland\Delphi7\Bin\delphi32.exe /np

Полученное значение есть ком.строка для запуска Делфи в режиме открытия существующего проекта. Инструмент для запуска - ф-ция CreateProcess()


Cj   (2007-04-28 08:34:00) [11]

Мне надо запустить жту программу с параметром на файл. Почуму не ShellExecute - знайте она проверяет запрет: RestrictRun в реестре!


Cj   (2007-04-28 08:30:00) [12]


> > ShellExecute - находитЭто как ?

Ну в смысле она не возвращает путь к программе, а запускает программу с параметром на файл.
А как мне определить программу зарегестрированную под определенный тип файла? Заранее спасибо.


Сергей М.   (2007-04-28 08:21:00) [13]


> ShellExecute - находит


Это как ?


Наверх

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