Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.11.2009, 21:37
s0manmbula s0manmbula вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 16
Репутация: 10
Вопрос Регистрация нового типа файла

Доброе время суток!
Проблема вообщем вот в чем! Пытаюсь зарегестрировать свой тип файлов с помощью следующей ф-и:

Код:
procedure TForm1.RegisterFileType(ext: string; App: string; IconSource: String; IconType:String);
var
  R : TRegIniFile;
begin
  R := TRegIniFile.Create('');
	with R do
  begin
    RootKey := HKEY_CLASSES_ROOT;
    WriteString('.'+ext,'',ext+'file');
    WriteString(ext+'file\shell\open\command', '', '"'+App+'" "%1"');
    WriteString(ext+'file\DefaultIcon', '', IconSource+', '+IconType);
  end;
  R.Free;
end;

Переменная IconSource собержит адрес dll-файла в котором лежат иконки. IconType соответственно (я так думал) - идентификатор иконки. Все работает, только иконка из dll-файла не меняется. Вообщем скорее всего берется только первая иконка. Как вообще должен выглядеть этот ключь в реестре или каким должна быть переменная IconType? Мой dll-файл содержит иконку с идентификатором HTML_Ico и иконку INI_Ico.

И еще одна неудобная весщь: все это дело обновляется после перезагрузки системы... Можно регистрировать тип файла без перезагрузки? Например через WinApi?
Ответить с цитированием
  #2  
Старый 26.11.2009, 08:47
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Цитата:
Сообщение от s0manmbula
Код:
WriteString(ext+'file\DefaultIcon', '', IconSource+', '+IconType);
Возможно, проблема в
Код:
IconSource+', '+IconType
тут после "," пробел не нужен. Строка должна быть примерно такой: C:\icons.dll,2
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
  #3  
Старый 26.11.2009, 14:16
s0manmbula s0manmbula вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от Karsh
Возможно, проблема в
Код:
IconSource+', '+IconType
тут после "," пробел не нужен. Строка должна быть примерно такой: C:\icons.dll,2

Я тоже думаю, что проблема в этом. Просто у меня на то что стоит после запятой реакции нет... Что это вообще за двойка после запятой. Это какой-то порядковый номер иконки (независящий от ее идентификатора в dll-файле)? Или таким должен быть ее идентификатор?
Ответить с цитированием
  #4  
Старый 26.11.2009, 14:42
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Цитата:
Сообщение от s0manmbula
Я тоже думаю, что проблема в этом. Просто у меня на то что стоит после запятой реакции нет... Что это вообще за двойка после запятой. Это какой-то порядковый номер иконки (независящий от ее идентификатора в dll-файле)? Или таким должен быть ее идентификатор?

Это порядковый номер иконки в библиотеке, номера можно посмотреть каким-нибудь редактором ресурсов
Ответить с цитированием
  #5  
Старый 26.11.2009, 22:41
s0manmbula s0manmbula вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vayrus
Это порядковый номер иконки в библиотеке, номера можно посмотреть каким-нибудь редактором ресурсов

Странно, неужели ошибка только из-зи пробела "IconSource+', '+IconType"? Кстати, а в Delphi (Rad Studio) еще есть редактрр иконок? Вроде когда то был, а щас я его найти не могу...

Да, может кто-то знает, как сделать регистрайию типа файла не через реестр а с помощью WinApi. Должно же что-то быть! А то через реестр все изменения вступают в силу только после перезагрузки...
Ответить с цитированием
  #6  
Старый 26.11.2009, 23:58
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Цитата:
Сообщение от s0manmbula
Странно, неужели ошибка только из-зи пробела "IconSource+', '+IconType"? Кстати, а в Delphi (Rad Studio) еще есть редактрр иконок? Вроде когда то был, а щас я его найти не могу...

Да, может кто-то знает, как сделать регистрайию типа файла не через реестр а с помощью WinApi. Должно же что-то быть! А то через реестр все изменения вступают в силу только после перезагрузки...

Неа, просто надо уведомить систему об изменении параметров соотвествующим сообщением, вроде так, если не ошибась, на память сообщение не помню, но имеет вид вроде:
СендМессаже(ЧанжеСистемМетрикс)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter