Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
3-93767
Anna
2004-02-04 12:58
2004.02.29
Проблема выбора


1-93856
Khabibulin
2004-02-16 17:02
2004.02.29
ScrollBars


1-94008
Настенька
2004-02-17 08:45
2004.02.29
последний символ в label


1-93923
Khabibulin
2004-02-13 21:40
2004.02.29
ZIP & RAR


1-93965
Anton.
2004-02-17 14:13
2004.02.29
POP3





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский