Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связать расширение со своей прогой, Неполучаеться до конца 
V
    Опции темы
Ak47black
  Дата 25.12.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Привет всем. помогите понять, как правильно связать своё приложение с расширением.
Вообшем вот мой сообственный код
Код

procedure AddProgramToRegAccoticion(Exencion, MenuName, SelfExeLocation: String);
var
  Reg: TRegistry;
  RealPathPart: String;
begin
  Reg:= TRegistry.Create;
  Reg.RootKey:= HKEY_CLASSES_ROOT;
  if Reg.KeyExists('.'+Exencion) then
  begin
    Reg.OpenKey('.'+Exencion,true);
    if Reg.ReadString('')<>'' then
    RealPathPart:= Reg.ReadString('') else
    RealPathPart:= Exencion;
  end
  else
  RealPathPart:= Exencion+'file';
  Reg.CloseKey;
  Reg.OpenKey(RealPathPart+'\shell',True);
  Reg.WriteString('','open'{MenuName});
  if not Reg.KeyExists(MenuName) then Reg.CreateKey(MenuName);
  Reg.OpenKey({MenuName}'open'+'\command',True);
  Reg.WriteString('','"'+SelfExeLocation+'"'+' "%1"');
  Reg.CloseKey;
  Reg.Free;
end;

  AddProgramToRegAccoticion('aos','open',Application.ExeName);

  • Как мне переделать этот код что-бы Open был default тоесть при двойном шелче файл с расштрение *.aos открывался с моей прогой?
  • Этот код конечно может быть 'корявым', может у кого есть готовый хорошо оформленный кусок кода?

PM MAIL   Вверх
former
Дата 25.12.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Можно вот так:


Процедура добавит необходимую информацию в реестр (один раз), но можно сделать reg файл.
Код

procedure TMainForm.Button3Click(Sender: TObject);
var R : TRegIniFile;
begin
  R := TRegIniFile.Create('');
 with R do
  begin
   RootKey := HKEY_CLASSES_ROOT;
   WriteString('.abc','','ABC');
   WriteString('ABC','','ABC file type');
   //WriteString('ABC\DefaultIcon','',ExtractFilePath(Application.ExeName)+'new.ico');
   WriteString('ABC\DefaultIcon','',Application.ExeName+',1');
   //WriteString('ABC\'+ExtractFilePath(Application.ExeName)+'\new.ico','',Application.ExeName+',0');
   WriteString('ABC\Shell','','This_Is_Our_Default_Action');
   WriteString('ABC\Shell\First_Action', '','This is our first action');
   WriteString('ABC\Shell\First_Action\command','', Application.ExeName+' /LotsOfParamaters %1');
   WriteString('ABC\Shell\This_Is_Our_Default_Action','', 'This is our default action');
   WriteString('ABC\Shell\This_Is_Our_Default_Action\command', '',Application.ExeName+' %1');
   WriteString('ABC\Shell\Second_Action', '','This is our second action');
   WriteString('ABC\Shell\Second_Action\command', '',Application.ExeName+' /TonsOfParameters %1');
   Free;
  end;
end; 


А в процедуру создания главной форым надо добавить

Код

if ParamStr(1)<>'' then
    begin
      fn:=ParamStr(1);
      //showmessage (fn);
       OpenFile(Fn);
    end;


Процедура открытия файла OpenFile  имеет следующую конструкцию:

Код

procedure OpenFile(FN:string);
Label m;
begin
  AssignFile(F,FN);
  Reset(F);
  Read(F,FVar);
 //Загрузка данных из файла
  Closefile(F);
end;



--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Ak47black
Дата 25.12.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Как вижу мой код делает тоже самое но результата корого я хотел невижу.
У меня всеровно как на картинке, хоть и ставлю defaul на Open.
user posted image
В чем тут дело. Неужеле Frontpage в особенном месте прописываеться?  smile 

Это сообщение отредактировал(а) Ak47black - 25.12.2006, 21:55
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.