Форум: "Основная";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
ВнизРегистрирование собственного расширения файлов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c