Форум: "WinAPI";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
ВнизОткрывать txt моей программой Найти похожие ветки
← →
acsoft © (2004-11-06 13:42) [0]Хочу, чтобы текстовые файлы открывались не Блокнотом, а моей программой. Для этого пишу так:
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;
Что делать? (кроме удаления блокнота :))
Что еще надо поменять в реестре?
← →
debuger © (2004-11-06 15:46) [1]если сделал правильно, то больше ниче менять не нада.
← →
Wish © (2004-11-06 16:14) [2]Эта наверна из-за WindowsXP.
> (кроме удаления блокнота :))
А ты попробуй - удали. Он снова появится, знаю из личного опыта, я тоже создавал текстовой редактор.
← →
acsoft © (2004-11-06 18:27) [3]Я вообще так посмотрел - в реестре записей эдак 5 о моей программе появляется (и это не в дублирующих ветках)... а я только один ключ меняю, даже просто один параметр...
Интересно как под другими операционками...
← →
acsoft © (2004-11-06 18:55) [4]Вот еще - если в "свойствах папки/Типы файлов" установить для txt мою программу, то все работает! (когда первый раз открыл там блокнот значился, несмотря на то, что ключ "txtfile\shell\open\command" был уже изменен)
Попытался отследить какие измененния в реестре происходят при замене Блокнота на мою программу - ничего не заметил, не может же быть, чтобы такие данные хранились не в реестре...
Где они хранятся-то?
← →
abc (2004-11-06 19:42) [5]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-09 11:55) [6]Cпасибо, но это просто расширенная версия того, что я уже написал - просто назначается еще иконка дефолтовая, да предусмотрен блок на случай, если винда не знает, что это за файлы такие BMP (или TXT в моем случае)...
Может вышедшие сегодня на работу (на бесплатный инет:)) мастера помогут мне.
Вообщем смотрите
1) Я тут взял поставил через Virtual Machine себе еще одну операционку - свежий XP. Так вот если под свежими виндами запустить мою программу с тем же кодом - то все Ок, тексты сразу начинают открываться в моей программе.
2) Дальше, хочу например деинсталлировать все моё, вернуть опять блокнот. Для этого возвращаю параметру "txtfile\shell\open\command" его первоначальное значение %SystemRoot%\system32\NOTEPAD.EXE %1 (просто вручную). При попытке запуска текстовых файлов обнаруживается ошибка.
3) Пытаюсь исправить - залезаю в свойства папки/типы файлов. Вижу, что тем же *.txt не сопоставлено никакого приложения (но я же вернул параметр к прежнему значению..). Хорошо... сопоставляю блокнот опять. Все работает.
4) Снова инсталлирую свою прогу. И на этом всё - винда ни в какую не хочет снова открывать тексты моей программой - только блокнотом. Приходится опять лезть в свойства папки/типы файлов, там менять блокнот на мою. И опять все работает. Но хочется же автоматически все делать - почему на свежей винде все сразу как надо работает, а на той, где уже менялось что-то, нет?
Короче, что я хочу выяснить - куда сохраняются данные из "свойства папки/типы файлов"?
← →
acsoft © (2004-11-09 11:57) [7]lkll
← →
acsoft © (2004-11-11 11:51) [8]...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.055 c