Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.061 c
1-1102495357
Patrick
2004-12-08 11:42
2004.12.26
Эмуляция нажатия клавиши


3-1101379348
Frozzen
2004-11-25 13:42
2004.12.26
Позиционирование в ДБГриде


1-1102587453
Dmitrij_K
2004-12-09 13:17
2004.12.26
DLL


9-1093546246
Melamed
2004-08-26 22:50
2004.12.26
Вопрос по Speech API


14-1102186674
YurikGL
2004-12-04 21:57
2004.12.26
Вот бы у нас так!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский