Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Ассоциация с файлами


Автор: romanzi 21.4.2011, 17:47
Код ассоциации с файлами:

Код
procedure TForm2.Button15Click(Sender: TObject);
var s:string;
Reg:TRegistry;

begin
  Reg:=TRegistry.Create; // создаем
  Reg.RootKey := HKEY_CLASSES_ROOT; // указываем корневую ветку

  Reg.OpenKey('.dev\OpenWithProgids\', true);
  Reg.WriteString('TestApplication.txt', '');

  Reg.OpenKey('\TestApplication.txt\DefaultIcon\', true);
  s:=Application.ExeName+',0';
  Reg.WriteString('', s);

  Reg.OpenKey('\TestApplication.txt\Shell\Open\', true);
  Reg.WriteString('', 'Открыть в TestApplication');

  Reg.OpenKey('command\', true);
  s:='"'+Application.ExeName+'" "%1"';
  Reg.WriteString('', s);

  Reg.Free;

  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;


Он работает! Но.что бы ассоциация действовала её нужно включить через "Свойство" (то-есть в самых подходящих программах нужно выбрать программу,на которую я поставил ассоциацию). smile 

Автор: romanzi 21.4.2011, 20:59
При вызове процедуры всё работает чётко, как чупакабра! smile 
Но проблема заключается в том,что после выполнения процедуры,надо  выбрать программу которую я занёс в реестр,а по умолчанию остаётся та,которой открывалась, например - я сделал ассоциацию на txt, после процедуры файлы всё равно открываются блокнотом, и нужно провести пару операций в свойствах,что бы открывало через нужную программу.

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

Автор: MetalFan 22.4.2011, 11:00
Цитата(romanzi @  21.4.2011,  20:59 Найти цитируемый пост)
и нужно провести пару операций в свойствах

каких операция? в каких свойствах?
1. 
Цитата(romanzi @  21.4.2011,  17:47 Найти цитируемый пост)
Reg.OpenKey('.dev\OpenWithProgids\', true);

убери '\OpenWithProgids\'

2. Попробуй выставить TRegistry.LazyWrite в false.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)