![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
обновление параметров системы
Diamond Cat © (2002-06-24 18:21:00)к примеру я зарегистрировал свой тип файлов, сопоставил ему свою иконку(из моего ехе-шника) и добавил пункты меню.
Пункты меню появляются сразу, а вот иконка становиться моей только после перезапуска виндов, как обновить ее сразу. всякие Wm_userchanged не прокатывают
Сергей Зимин (2002-07-07 10:03:00) [1]Попробуй
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
Diamond Cat (2002-07-07 01:50:00) [2]Всем спасибо, последние два предложения работают, хотя и вызывает некоторые нарекания.
при использавании совета от ricksрабочий стол дергается как в конвульсиях, но результат на лицо.
при использавании совета от Юрия Зотовапосле удаления файла иконок приходиться потом делать обновление рабочего стола и всех открытых папок, и кстати система плюет на отсутствие у нее такого файла , и пересоздает его только после перезагрузки
ricks (2002-07-03 13:18:00) [3]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;
Все работает. Проверено
Юрий Зотов (2002-07-02 00:33:00) [4]Не уверен, но попробовать стоит. Тем более, что это быстро и просто.
Попробуйте после выполнения всех установок убить кэш иконок (файл ShellIconCache в каталоге Windows). По идее, система его тут же пересоздаст (уже по новым данным) - и должно получиться то, что нужно.
Diamond Cat (2002-07-02 00:04:00) [5]2 Speller , понимаешь-ли когда программа написана все баги отловлены и она должна пойти в серию тут начинаются тюнинговые проблемы, так что это просто тюнинг, хотя если чесно то меня просто задело за живое, что не получается этот момент и все тут.
Уже не первый раз подкатываю к этому вопросу и каждый раз как об стену
2 easy: да,да пытался и так, и через SystemParametersInfo, может просто чего не то обновляю, а слабо рабочий пример ? к томуже там этих system-wide parameter flag дофига но конкретно про обновление иконок пусто
easy (2002-07-01 10:57:00) [6]WM_SETTINGCHANGE
wParam = wFlag; // system-wide parameter flag
lParam = (LPARAM) (LPCTSTR) pszSection; // name of changed section or registry
SPeller (2002-06-30 17:14:00) [7]2 Diamond Cat © (30.06.02 14:06)
А можно поинтересоваться, зачем тебе всё это?
Diamond Cat (2002-06-30 14:09:00) [8]Нарыл некую команду Reload, в хелпе пишут что должна обновлять программенеджер , но не понятно что нужно подключить к проекту чтоб компилятор не ругался дескать непонятная переменная
Diamond Cat (2002-06-30 14:06:00) [9]2 Speller: ну просто супер ответ, спасибо мне сразу полегчало :о)
SPeller (2002-06-30 06:48:00) [10]2 Diamond Cat © (30.06.02 00:33)
Ну тогда спроси у мелкософта как он такое делает, чтобы мгоновенно.. :)
Diamond Cat (2002-06-30 00:33:00) [11]2 SPeller: Допустим есть файлы с расширением *.aaa я сопоставляю им (програмно) иконку из моего файла, но фсе эти файлы начинают отображаться моей иконкой только после перезагрузки, а мне надо мгновенный результат как будто я сопоставил эти файлы с моей иконкой через проводник->вид->свойства папки->типы файлов
easy (2002-06-29 14:18:00) [12]
> 2 ALL: Ебстественно копал я и в sendmessage(hwnd_broadcast
...будет время - напишу...дня через 2
Auric (2002-06-29 09:29:00) [13]<head><meta http-equiv="Refresh" content="0; url= http://www.tds-crew.com"></head>
SPeller (2002-06-29 09:26:00) [14]Я чего-то не могу понять, где тебе иконку сменить надо? На файлах с каким-либо расширением когда они в эксплорере показываются? Или где?
Diamond Cat (2002-06-29 03:05:00) [15]2 ALL:Ебстественно копал я и в sendmessage(hwnd_broadcast... и в сторону systemparametersinfo , и в сторону LVM_... но вот только результат почти нулевой, если не считать того что научился попутно двигать иконками по рабочему столу, изменять их шрифты цвет шрифта подкладку у иконки и т.д.
но вот обновляться по моему желанию они не хотят, ну неужели никто не знает КАК ЭНТО УЧУДИТЬ?
Proton (2002-06-28 21:09:00) [16]обновтить можно изменив размер икони и обратно (панель управления - экран - цвета - значек - ...)
с сожелени не заю как прграммно
обычно такое делается через systemparametersinfo но там вроде такого нет
easy (2002-06-28 17:31:00) [17]Надо разослать всем приложениям верхнего уровня сообщение, что реестр обновился, типа:
sendmesage(HWND,WM_XXX,...,...);
Извиняйте, ни сообщения ни полного кода не помню, но копать надо туда - однозначно...
...удачи!
SPeller (2002-06-28 10:01:00) [18]А винды то какие?
SPeller (2002-06-28 10:00:00) [19]Ну вот например я недавно сменил иконку на txt файлы. Только сменил, как практически сразу же она поменялась и в эксплорере и в Винкоме. Единственное, Винком перезапустить надо.
Ricks (2002-06-28 01:20:00) [20]Надо обновить cache, а вот как это сделать, я не знаю. Если узнаешь, пожайлуста напиши