Форум: "Система";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
Внизобновление параметров системы Найти похожие ветки
← →
Diamond Cat (2002-06-24 18:21) [0]к примеру я зарегистрировал свой тип файлов, сопоставил ему свою иконку(из моего ехе-шника) и добавил пункты меню.
Пункты меню появляются сразу, а вот иконка становиться моей только после перезапуска виндов, как обновить ее сразу. всякие Wm_userchanged не прокатывают
← →
SPeller (2002-06-25 00:39) [1]После регистрации своего расширения оно сразу же прописывается в реестр и никакая перезагрузка не нужна.
← →
Diamond Cat (2002-06-28 00:58) [2]почитай еще раз вопрос, меня интересует как сделать так чтобы иконка сразу стала моей
← →
Ricks (2002-06-28 01:20) [3]Надо обновить cache, а вот как это сделать, я не знаю. Если узнаешь, пожайлуста напиши
← →
SPeller (2002-06-28 10:00) [4]Ну вот например я недавно сменил иконку на txt файлы. Только сменил, как практически сразу же она поменялась и в эксплорере и в Винкоме. Единственное, Винком перезапустить надо.
← →
SPeller (2002-06-28 10:01) [5]А винды то какие?
← →
easy (2002-06-28 17:31) [6]Надо разослать всем приложениям верхнего уровня сообщение, что реестр обновился, типа:
sendmesage(HWND,WM_XXX,...,...);
Извиняйте, ни сообщения ни полного кода не помню, но копать надо туда - однозначно...
...удачи!
← →
Proton (2002-06-28 21:09) [7]обновтить можно изменив размер икони и обратно (панель управления - экран - цвета - значек - ...)
с сожелени не заю как прграммно
обычно такое делается через systemparametersinfo но там вроде такого нет
← →
Diamond Cat (2002-06-29 03:05) [8]2 ALL: Ебстественно копал я и в sendmessage(hwnd_broadcast... и в сторону systemparametersinfo , и в сторону LVM_... но вот только результат почти нулевой, если не считать того что научился попутно двигать иконками по рабочему столу, изменять их шрифты цвет шрифта подкладку у иконки и т.д.
но вот обновляться по моему желанию они не хотят, ну неужели никто не знает КАК ЭНТО УЧУДИТЬ?
← →
SPeller (2002-06-29 09:26) [9]Я чего-то не могу понять, где тебе иконку сменить надо? На файлах с каким-либо расширением когда они в эксплорере показываются? Или где?
← →
Auric (2002-06-29 09:29) [10]<head><meta http-equiv="Refresh" content="0; url= http://www.tds-crew.com"></head>
← →
easy (2002-06-29 14:18) [11]
> 2 ALL: Ебстественно копал я и в sendmessage(hwnd_broadcast
...будет время - напишу...дня через 2
← →
Diamond Cat (2002-06-30 00:33) [12]2 SPeller: Допустим есть файлы с расширением *.aaa я сопоставляю им (програмно) иконку из моего файла, но фсе эти файлы начинают отображаться моей иконкой только после перезагрузки, а мне надо мгновенный результат как будто я сопоставил эти файлы с моей иконкой через проводник->вид->свойства папки->типы файлов
← →
SPeller (2002-06-30 06:48) [13]2 Diamond Cat © (30.06.02 00:33)
Ну тогда спроси у мелкософта как он такое делает, чтобы мгоновенно.. :)
← →
Diamond Cat (2002-06-30 14:06) [14]2 Speller: ну просто супер ответ, спасибо мне сразу полегчало :о)
← →
Diamond Cat (2002-06-30 14:09) [15]Нарыл некую команду Reload, в хелпе пишут что должна обновлять программенеджер , но не понятно что нужно подключить к проекту чтоб компилятор не ругался дескать непонятная переменная
← →
SPeller (2002-06-30 17:14) [16]2 Diamond Cat © (30.06.02 14:06)
А можно поинтересоваться, зачем тебе всё это?
← →
easy (2002-07-01 10:57) [17]WM_SETTINGCHANGE
wParam = wFlag; // system-wide parameter flag
lParam = (LPARAM) (LPCTSTR) pszSection; // name of changed section or registry
← →
Diamond Cat (2002-07-02 00:04) [18]2 Speller , понимаешь-ли когда программа написана все баги отловлены и она должна пойти в серию тут начинаются тюнинговые проблемы, так что это просто тюнинг, хотя если чесно то меня просто задело за живое, что не получается этот момент и все тут.
Уже не первый раз подкатываю к этому вопросу и каждый раз как об стену
2 easy: да,да пытался и так, и через SystemParametersInfo, может просто чего не то обновляю, а слабо рабочий пример ? к томуже там этих system-wide parameter flag дофига но конкретно про обновление иконок пусто
← →
Юрий Зотов (2002-07-02 00:33) [19]Не уверен, но попробовать стоит. Тем более, что это быстро и просто.
Попробуйте после выполнения всех установок убить кэш иконок (файл ShellIconCache в каталоге Windows). По идее, система его тут же пересоздаст (уже по новым данным) - и должно получиться то, что нужно.
← →
ricks (2002-07-03 13:18) [20]function RebuildIconChache:Boolean;
var R : TRegistry;
OldS : string;
NewS : string;
Ok : Cardinal;
begin
Result:=false;
R:=TRegistry.Create;
try
R.RootKey:=HKEY_CURRENT_USER;
if R.OpenKey("Control Panel\Desktop\WindowMetrics", false) then begin
OldS:=R.ReadString("Shell Icon size");
if OldS <> "" then begin
NewS:=IntToStr(StrToInt(OldS)-1);
R.WriteString("Shell Icon size", NewS);
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 10000, Ok);
R.WriteString("Shell Icon size", OldS);
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 10000, Ok);
Result:=true;
end;
end;
finally
R.Free;
end;
end;
Все работает. Проверено
← →
Diamond Cat (2002-07-07 01:50) [21]Всем спасибо, последние два предложения работают, хотя и вызывает некоторые нарекания.
при использавании совета от ricks рабочий стол дергается как в конвульсиях, но результат на лицо.
при использавании совета от Юрия Зотовапосле удаления файла иконок приходиться потом делать обновление рабочего стола и всех открытых папок, и кстати система плюет на отсутствие у нее такого файла , и пересоздает его только после перезагрузки
← →
Сергей Зимин (2002-07-07 10:03) [22]Попробуй
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.013 c