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

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

Открывать txt моей программой [WinXP]


acsoft ©   (2004-11-06 13:42:00) 

Хочу, чтобы текстовые файлы открывались не Блокнотом, а моей программой. Для этого пишу так:
 reg:=TRegistry.Create;
 try
    reg.RootKey:=HKEY_CLASSES_ROOT;
    reg.OpenKey('txtfile\shell\open\command',True);
    reg.WriteString('','C:\Windows\system32\NP.exe "%1"');
 finally
    Reg.CloseKey;
    Reg.Free;
 end;
Но это изменение реестра позволяет добавить программу только в список "Открыть с помощью", а по умолчанию тексты все-равно открываются блокнотом.
Что делать? (кроме удаления блокнота :))
Что еще надо поменять в реестре?


acsoft   (2004-11-11 11:51:00) [1]

...


acsoft   (2004-11-09 11:57:00) [2]

lkll


acsoft   (2004-11-09 11:55:00) [3]

Cпасибо, но это просто расширенная версия того, что я уже написал - просто назначается еще иконка дефолтовая, да предусмотрен блок на случай, если винда не знает, что это за файлы такие BMP (или TXT в моем случае)...

Может вышедшие сегодня на работу (на бесплатный инет:)) мастера помогут мне.

Вообщем смотрите
1) Я тут взял поставил через Virtual Machine себе еще одну операционку - свежий XP. Так вот если под свежими виндами запустить мою программу с тем же кодом - то все Ок, тексты сразу начинают открываться в моей программе.
2) Дальше, хочу например деинсталлировать все моё, вернуть опять блокнот. Для этого возвращаю параметру 'txtfile\shell\open\command' его первоначальное значение %SystemRoot%\system32\NOTEPAD.EXE %1 (просто вручную). При попытке запуска текстовых файлов обнаруживается ошибка.
3) Пытаюсь исправить - залезаю в свойства папки/типы файлов. Вижу, что тем же *.txt не сопоставлено никакого приложения (но я же вернул параметр к прежнему значению..). Хорошо... сопоставляю блокнот опять. Все работает.
4) Снова инсталлирую свою прогу. И на этом всё - винда ни в какую не хочет снова открывать тексты моей программой - только блокнотом. Приходится опять лезть в свойства папки/типы файлов, там менять блокнот на мою. И опять все работает. Но хочется же автоматически все делать - почему на свежей винде все сразу как надо работает, а на той, где уже менялось что-то, нет?

Короче, что я хочу выяснить - куда сохраняются данные из "свойства папки/типы файлов"?


abc   (2004-11-06 19:42:00) [4]

Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey('.BMP' , True);
Reg.WriteString('', 'BMPfile');
Reg.CloseKey;

Reg.CreateKey('BMP'+'file_cyd');
Reg.OpenKey('BMPfile\DefaultIcon', True);
Reg.WriteString('', Application.ExeName + ',0');
Reg.CloseKey;
Reg.OpenKey('BMPfile\shell\open\command', True);
Reg.WriteString('', Application.ExeName + ' "%1"');
Reg.CloseKey;
Reg.Free;
может это поможет


acsoft   (2004-11-06 18:55:00) [5]

Вот еще - если в "свойствах папки/Типы файлов" установить для txt мою программу, то все работает! (когда первый раз открыл там блокнот значился, несмотря на то, что ключ 'txtfile\shell\open\command' был уже изменен)
Попытался отследить какие измененния в реестре происходят при замене Блокнота на мою программу - ничего не заметил, не может же быть, чтобы такие данные хранились не в реестре...
Где они хранятся-то?


acsoft   (2004-11-06 18:27:00) [6]

Я вообще так посмотрел - в реестре записей эдак 5 о моей программе появляется (и это не в дублирующих ветках)... а я только один ключ меняю, даже просто один параметр...
Интересно как под другими операционками...


Wish   (2004-11-06 16:14:00) [7]

Эта наверна из-за WindowsXP.

> (кроме удаления блокнота :))

А ты попробуй - удали. Он снова появится, знаю из личного опыта, я тоже создавал текстовой редактор.


debuger   (2004-11-06 15:46:00) [8]

если сделал правильно, то больше ниче менять не нада.


Наверх

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