Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Вопросы по регистрации расширения   Найти похожие ветки 

 
Зм1й ©   (2006-06-23 20:50) [0]

Простите за тупые вопросы, но нигде пока не нашёл ответов. Хочу, чтобы у файлов моего типа была иконка, которая хранится в файле с екзешником (но не иконка екзешника). Возможно ли это сделать? Я пытался в реестре в DefaultIcon писать после пути через запятую различные числа, но нет эффекта. Кстати, на что эти числа указывают, если не на номер иконки? Подскажите, пожалуйста. Есть ещё вопросы, но сначала хотел бы с этим разобраться.


 
Шпиён   (2006-06-23 22:05) [1]

1) создаешь файл ресурса
файл myico.rc

2020 ICON "MY.ICO"

2) компилируешь его с помощью brcc32

brcc32 -32 myico.rc myico.res

файл с иконкой (MY.ICO) должен находиться в том же каталоге, что и файл *.rc

3) подключаешь к проекту

{$R myico.res}

4) Компилируешь проект -)

5) Наслаждаешься результатом (например, так):

REGEDIT4

[HKEY_CLASSES_ROOT\myfile\DefaultIcon]
@="D:\\path\\MySuperPuperProg.exe,-2020"

[HKEY_CLASSES_ROOT\.my]
@="myfile"

[HKEY_CLASSES_ROOT\myfile\shell\open\command]
@="\"D:\\Path\\MySuperPuperProg.exe\" \"%1\""


 
Зм1й ©   (2006-06-24 11:50) [2]

К сожалению, ничего не получается, иконка по-прежнему как у экзешника


 
Шпиён   (2006-06-24 13:44) [3]

http://forum.sources.ru/index.php?showtopic=103889&hl=

А если руками меняешь -  перезагрузи систему.


 
Rial ©   (2006-06-24 14:26) [4]


> @="D:\\path\\MySuperPuperProg.exe,-2020"


Цифрой должен указываться номер иконки в файле.
Главная иконка будет под номером 0, следующая - 1.
Это, однако, лучше проверить с помощью какой- нибудь программы -
редактора ресурсов.

2020 - в любом случае тут работать не должно, ИМХО.
И перед цифрой "-" не нужен.


 
Зм1й ©   (2006-06-24 14:26) [5]

Я руками меняю(в реестр пишу), windows перезагрузил, кэш иконок удалил, всё равно не помогает


 
Зм1й ©   (2006-06-24 14:28) [6]


> Это, однако, лучше проверить с помощью какой- нибудь программы
> -
> редактора ресурсов.

Какой например?


 
Rial ©   (2006-06-24 14:31) [7]


> Зм1й ©   (24.06.06 14:26) [5]
>
> Я руками меняю(в реестр пишу), windows перезагрузил, кэш
> иконок удалил, всё равно не помогает


Никакой необходимости в перезагрузке нет,
если необходимо просто открывать файл с попощью какого -либо
приложения.
Если важна смена иконки, то нужно сообщить о смене иконки эксплореру.
Ручками это сделать просто - открыть в "свойствах папки" данные о твоем
расширении.
Если до этого у файла не было иконки, и он не был еще ни разу показан,
то все сразу будет нормально. Далее эксплорер кеширует иконку.


 
Шпиён   (2006-06-24 14:33) [8]


> Rial ©   (24.06.06 14:26) [4]


> 2020 - в любом случае тут работать не должно, ИМХО.

С какой стати? Должно работать и работает. Если обратишь внимание, сначала к файлу был прикреплен ресурс с иконкой  2020.

Другое дело, что под ХР иконка "схатилась"
сразу же, а 98 пришлось перезагрузить.


 
Rial ©   (2006-06-24 14:35) [9]

Вот, выложил за неимением другой прямой ссылки:

http://www.Rial578.narod.ru/download/reshack.rar


 
Шпиён   (2006-06-24 14:37) [10]


> Зм1й ©   (24.06.06 14:28) [6]
>
> > Это, однако, лучше проверить с помощью какой- нибудь программы
>
> > -
> > редактора ресурсов.
>
> Какой например?

Например, Restorator -)


 
Rial ©   (2006-06-24 14:37) [11]


> Шпиён   (24.06.06 14:33) [8]


Я не знаю почему, но у меня на практике такой способ иногда тоже не работал.


 
Зм1й ©   (2006-06-24 14:41) [12]

Получилось! Оказывается, после запятой пробел не нужно было ставить :)
Всем спасибо за помощь. Но есть ещё вопрос. Когда я открываю файл (расширение которого зарегистрировал) и запускается моё приложение, то в качестве параметра ему передаётся имя файла. Так вот, это имя передаётся в ascii кодировке(если я ничего не путаю), и оно вобщем получается сокращённое, с тильдой. Вопрос в том, как из него получить нормальное имя?


 
Rial ©   (2006-06-24 14:43) [13]

function FullFileName(FileName:String):String;

function Add(Var S1:String;Const S2:String):String;
begin
If (Length(S1)>0)then S1:=S2+"\"+S1
                 else S1:=S2;
end;

Var FName:String;
   SS:TSearchRec;
begin
FName:="";
Repeat
 FindFirst(FileName,faAnyFile,SS);
 Add(FName,SS.Name);
 FindClose(SS);
 FileName:=ExtractFileDir(FileName);;
Until (Length(FileName)<=3);
Result:=FileName+FName;
end;


Если, что, извиняюсь за код:
возможно есть какая стандартная процедура.


 
Зм1й ©   (2006-06-24 15:31) [14]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.054 c
2-1151080131
resuS
2006-06-23 20:28
2006.07.09
Сортировка по алфавиту


8-1138515554
Змей
2006-01-29 09:19
2006.07.09
установка компоненты DelphiX


15-1150011582
KASioZ
2006-06-11 11:39
2006.07.09
Debugger


2-1150969624
nickhilo
2006-06-22 13:47
2006.07.09
Использование помощника Microsoft Office в программах на Delphi.


2-1150797351
Unknowing
2006-06-20 13:55
2006.07.09
Файлы данных