Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2009, 20:46   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию расширения по умолчанию в делфи

Добавляю в реестр тип файла "txt" из текстовика,что бы моя программа открывала по умолчанию,но по умолчанию он ни как не хочет становится,как был блокнот по умолчанию,так и остается.
Любые другие расширения устанавливаются,но только если у этих расширений по умолчанию ни какой программы не было,типа "ini".А если в ручную файлу с расширением "ini" выставить блокнот,то после этого моя программа так же не может сделать через реестр себя по умолчанию.
пробовал так:
Код:
begin
reg := TRegistry.Create; 
reg.RootKey := HKEY_CLASSES_ROOT; 
reg.OpenKey('.txt',true);
reg.WriteString('', 'LETTER');
reg.CloseKey;
reg.OpenKey('LETTER\DefaultIcon',true);
reg.WriteString('', paramstr(0) + ', 0');
reg.CloseKey;
reg.OpenKey('LETTER\shell\open\command', true);
reg.WriteString('', ParamStr(0) + ' "%1"');
reg.CloseKey;
reg.Free;
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 13.04.2009, 22:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)мне кажется чтото ты не туда пишешь
2)попробуй этот модуль(в нем пример вроде есть)
Вложения
Тип файла: rar clsFileType.rar (2.7 Кб, 12 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 13.04.2009 в 22:39.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.04.2009, 23:36   #3
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию

Все тоже самое делаю,попробуйте у Вас будет по умолчанию?
Вложения
Тип файла: rar Unit1.rar (2.8 Кб, 9 просмотров)
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 14.04.2009, 00:22   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

используй модуль.
в нем все рабочее, блин, и зачем я это сделал
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.04.2009, 06:07   #5
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

от пример для *.bmp файлов

Код:
var
 Reg: TRegistry;
begin
 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;
end;
думаю Михаил Юрьевич Вы заметите отличие вашего метода )
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 14.04.2009, 10:03   #6
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 661
По умолчанию

Цитата:
Сообщение от Ntlegend Посмотреть сообщение
от пример для *.bmp файлов

Код:
var
 Reg: TRegistry;
begin
 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;
end;
думаю Михаил Юрьевич Вы заметите отличие вашего метода )
Вы знаете, честно,вообще ни чего не заметил,
кроме как ,у вас Application.ExeName ,а у меня paramstr(0)

все один в один.

и у Пепел Феникса,модуль один в один,смысл добавления расширения в реестр везде одинаковый,но вопрос мой был такой:


Добавляю в реестр тип файла "txt" из текстовика,что бы моя программа открывала по умолчанию,но по умолчанию он ни как не хочет становится,как был блокнот по умолчанию,так и остается.
Любые другие расширения устанавливаются,но только если у этих расширений по умолчанию ни какой программы не было,типа "ini".А если в ручную файлу с расширением "ini" выставить блокнот,то после этого моя программа так же не может сделать через реестр себя по умолчанию.
пробовал так:
За частые поиски был забанен во всех известных
поисковых системах!

Последний раз редактировалось Михаил Юрьевич; 14.04.2009 в 10:11.
Михаил Юрьевич вне форума Ответить с цитированием
Старый 15.04.2009, 02:47   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуй пройти по примеру в модуле.
там сначало убирается программа по умолчанию для нужного типа файла а потом ставится новая
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.04.2009, 03:13   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,486
По умолчанию

Вот, ищё !
Всегда этой процедурой пользуюсью.
Код:
procedure RegisterFileType(FileType, FileTypeName, Description, ExecCommand: string); 
begin 
if (FileType='') or (FileTypeName='') or (ExecCommand='') then exit;  
if FileType[1]<>'.' then FileType:='.'+FileType;  
if Description='' then Description:=FileTypeName;  
with Treginifile.create do  
try rootkey := hkey_classes_root;  
writestring(FileType,'',FileTypeName);  
writestring(FileTypeName,'',Description);  
writestring(FileTypeName+'\shell\open\command','',ExecCommand+' "%1"'); 
finally free;  end; end;
uberchel вне форума Ответить с цитированием
Старый 15.04.2009, 08:50   #9
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

[offtop]
ни в одном из примеров нет ни одной проверки... а вы работаете с hkey_classes_root, доступ к которому может получить далеко не каждый...
If WriteString fails, an exception is raised, and the value is not written to the registry. а try-а с обработкой соответствующего класса исключения никто не делает....
OpenKey -функция, а всем на это как- то все равно

[/offtop]
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как из делфи 7 открыть файл программой по умолчанию Alar Общие вопросы Delphi 1 21.01.2010 17:23
Расширения к Firefox Altera Софт 0 22.11.2008 13:49
реестр, расширения StartMis Общие вопросы Delphi 6 06.11.2008 20:01
XMM расширения Gulya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 17.12.2007 00:45
Проверка расширения файла Mickle Общие вопросы Delphi 2 04.05.2007 16:41