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

Вниз

Регистрирование собственного расширения файлов   Найти похожие ветки 

 
fc   (2004-02-15 22:29) [0]

Здравствуйте.
Регистрирую расширение для моего приложения. Все нормльно, только иконка не появляется сразу. После перезагрузки все нормально. Не подскажите как это исправить?


 
Юрий Зотов ©   (2004-02-15 23:03) [1]

Нужно уведомить оболочку об изменениях. Попробуйте вот что:
SHChangeNotify(SHCNE_ASSOCCHANGED, 0, 0, 0);


 
Cobalt ©   (2004-02-15 23:04) [2]

Есть такая функция, называется как-то типа SetSystemParametrInfo, непомню точно. Так вот она рассылала всем прогам сообщение о том, что в реестре изменился такой-то ключ. Возможно, надо использовать именно эту функцию?
Или попробуйте проследить за сообщениями, посылаемыми проводником при смене иконки у какого-нибудь типа файлов.


 
fc   (2004-02-15 23:39) [3]

SHChangeNotify(SHCNE_ASSOCCHANGED, 0, 0, 0);
Большое спасибо, это помогло.


 
Эли   (2004-02-17 00:34) [4]

[Error] Unit1.pas(719): Undeclared identifier: "SHChangeNotify"

Вот что получается! Что же делать? Uses?


 
Defunct ©   (2004-02-17 01:26) [5]

Uses ShlObj


 
Эли   (2004-02-17 10:44) [6]

Да, теперь уже не пишет Undeclared identifier, но всё так же требуется перезагрузка (Delphi 7 Windows XP). Иконки смигивают, но ничего не меняется, пока не перезагрузишь. А кому-то помогает.


 
Эли   (2004-02-17 10:58) [7]

Корректная работа программы возможна на отдельно взятом компьютере у отдельно взятого программиста? Как у Ленина - построение коммунизма возможно в отдельно взятой стране для отдельно взятых людей!


 
Юрий Зотов ©   (2004-02-17 11:20) [8]

> Эли (17.02.04 10:58) [7]

> Корректная работа программы возможна на отдельно взятом
> компьютере у отдельно взятого программиста?

Смотря какой программист. Иногда написанные им программы действительно работают корректно только на отдельно взятом компьютере, иногда - на любом, а иногда - ни на каком.

Вы же сами говорите - иконки смаргивают. Значит, кэш иконок вполне успешно обновляется - то есть, SHChangeNotify нормально срабатывает. А уж почему при этом ничего не меняется - это другой вопрос.


 
Эли   (2004-02-17 12:30) [9]

Спасибо, всё работает. И в XP и в Millennium.


 
ssk   (2004-02-17 12:30) [10]

Было взято из факов на разных сайтах.

Регистрация расширения

procedure RegisterFileType(ExtPrefix, EXEPath:String);
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
with reg do
begin
RootKey:=HKEY_CLASSES_ROOT;
OpenKey("."+ExtPrefix,True);
WriteString("",ExtPrefix+"file");
CloseKey;
CreateKey(ExtPrefix+"file");
OpenKey(ExtPrefix+"file\DefaultIcon",True);
WriteString("",EXEPath+",0");
CloseKey;
OpenKey(ExtPrefix+"file\shell\open\command",True);
WriteString("",EXEPath+" "%1"");
CloseKey;
Free;
end;
end;

Как без перезагрузки изменить картинки у только что зарег. файлов

GetModuleFileName(0, Buffer, Sizeof(Buffer));

Key := RegKeyOpenCreate(HKEY_CLASSES_ROOT, ".atheme");
RegKeySetStr(Key, "", "athemefile");
RegKeyClose(Key);

Key := RegKeyOpenCreate(HKEY_CLASSES_ROOT, "athemefile");
RegKeySetStr(Key, "", "Atheme");
RegKeyClose(Key);

Key := RegKeyOpenCreate(HKEY_CLASSES_ROOT, "athemefile\DefaultIcon");
RegKeySetStr(Key, "", """+Trim(Buffer)+"",0");
RegKeyClose(Key);

Key := RegKeyOpenCreate(HKEY_CLASSES_ROOT, "athemefile\shell\open\command");
RegKeySetStr(Key, "", """+Trim(Buffer)+"" "%1"");
RegKeyClose(Key);

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, NiL, NiL);



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
3-93771
zamkom
2004-02-02 20:44
2004.02.29
Corrupt file - other then header


14-94125
Домарощинер
2004-02-08 15:45
2004.02.29
Apache+PHP+MySQL on Win2k:download & setup


3-93775
kiril-
2004-02-04 10:31
2004.02.29
UPPER в Interbase


1-93890
Sirus
2004-02-16 06:48
2004.02.29
Как узнать количество записей в массиве типа array of type


4-94225
dima_shapkin
2003-12-24 18:16
2004.02.29
Рамка