Обновление состояния ярлыка (изменение иконки)
Цель:
Хочу перенести корзину на панель задач.
Открываю корзину и перетаскиваю иконку на рабочий стол.
На рабочем столе появился ярлык корзины.
Проблема:
создаю папку и файл, удаляю, тут же значок корзины меняется.
значок ярлыка остается прежним, но обновляется если перезагрузить explorer.exe
(при изменении значка любой другой папки с помощью Folder Painter, иконка ярлыка тоже меняется)
Вопросы:
Можно ли как-то прописать чтобы ярлык тоже обновлялся? Или добавить к команде 'обновить'?
Можно ли добавить к ярлыку правой кнопкой команду 'Очистить корзину'?
(например дублировав .lnk на .lnkk и прописать новую команду только для таких ярлыков)
Пробовал:
Хотел сделать по аналогии с God Mode.{ED7BA470-8E54-465E-825C-99712043E01C}
Корзина.{645FF040-5081-101B-9F08-00AA002F954E}
Ярлык создался, без иконки ярлыка, но он тоже не обновляется.
Ответы (3 шт):
корзина это системная папка. чтобы она отображалась на рабочем столе, не надо создавать ярлык. В случае с win10 надо отрыть Персоанализация -> Темы. Справа выбрать Параметры значков рабочего стола, и в открывшемся диалоговом окне установить галку у корзины.
тогда у вас и контекстное меню адекватное будет и с обновлением иконки не будет проблем.
Резюме:
Перетащил иконку напрямую из корзины на панель задач.
При нажатии правой кнопкой мыши есть пункт 'Очистить корзину'.
При очищении иконка меняется.

Еще:
Добавил в контекстное меню 2 параметра
1) Перезапустить проводник Windows
2) Перестроить кэш значков Windows

Для справки:
Думаю можно будет добавить код команды 2) в команду 'Обновить' через &.
И получим обновление кэша значков при команде обновить.
Можно попробовать автоматизировать вот этот скрипт.(vbs)
'Скрипт правильно обновляет Рабочий стол, очищая (обновляя) кэш иконок командами в 8-ой и 9-ой строках.
'Побочным действием такой очистки кэша и обновления оболочки является создание файлов-отчётов.
'Команды, начинающиеся с 14-ой строки, отвечают за удаление этих логов после паузы в 1 секунду (10-я строка).
'13-я строка указывает сценарию переменную среду %userprofile%, которую Microsoft ® WBSH по умолчанию не понимает.
'Автор скрипта: Аванесян Х.С.
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "ie4uinit.exe -show"
oShell.run "ie4uinit.exe -ClearIconCache"
WScript.Sleep 1000
Set objFSO = CreateObject("Scripting.FileSystemObject")
set WshShell = CreateObject("WScript.Shell")
UserProfile = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
If objFSO.FileExists(USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\ie4uinit-ClearIconCache.log") Then
objFSO.DeleteFile USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\ie4uinit-ClearIconCache.log"
End If
If objFSO.FileExists(USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\ie4uinit-show.log") Then
objFSO.DeleteFile USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\ie4uinit-show.log"
End If
If objFSO.FileExists(USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\brndlog.txt") Then
objFSO.DeleteFile USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\brndlog.txt"
End If
If objFSO.FileExists(USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\ie4uinit-UserConfig.log") Then
objFSO.DeleteFile USERPROFILE &"\AppData\Local\Microsoft\Internet Explorer\ie4uinit-UserConfig.log"
End If