winapi - Як відновити Windows Icon Cache без закриття explorer.exe або перезапустити Windows? - Qaru

  1. Task Я намагаюся налаштувати значок папки з мого програми, але через те, як Windows кешируєт значки...
  2. питання

Task

Я намагаюся налаштувати значок папки з мого програми, але через те, як Windows кешируєт значки та мініатюри, я щосили намагаюся отримати змінену папку, щоб оновити її новий значок.

У Windows є два способи, якими я знаю налаштувати піктограму папок, найпростіший спосіб - натиснути правою кнопкою миші папку з Провідника Windows, Властивості, а потім вибрати вкладку "Налаштувати" і змінити її значок, цей метод не годиться, але ж це вимагає ручного зміни властивостей папки.

Другий спосіб, який я роблю з моєї програми, - створити файл desktop.ini і помістити його в папку, що вимагає зміни значка, документацію на desktop.ini можна знайти тут: http://hwiegman.home.xs4all.nl/desktopini.html і статтю тут: http://helpdeskgeek.com/how-to/customize-folder-icons-desktop-ini/

Як показано нижче, значок папки в Windows не оновлюється, хоча ви можете бачити з властивостей папки, що значок змінився, просто Windows не вказує значок оновленої папки:

Як показано нижче, значок папки в Windows не оновлюється, хоча ви можете бачити з властивостей папки, що значок змінився, просто Windows не вказує значок оновленої папки:

Я повністю обізнаний про значки і ескізах кешування Windows, я шукав і читав кілька сторінок про те, як нібито перебудувати кеш іконки і, таким чином, змусити Windows відображати недавно змінений значок, а не кешувати, однак я не можу змусити це працювати з мого програми без перезапуску Windows або процесу Explorer.exe, це необхідно зробити, не перериваючи Windows, хоча закриття Explorer.exe або необхідність перезапуску абсолютно не є варіантом.

Цікаво, однак, що при зміні значка папки з першого погляду, описаного мною раніше, Windows якимось чином вдається очистити і перебудувати кеш значків, так як змінена папка швидко оновлена, щоб показати новий значок, проте я не бачу, які трюки Windows роблять для досягнення цього.

спроби

Кілька речей, які я спробував невдачливе (в певному порядку):

  • Виконання наступного: ie4uinit.exe -ClearIconCache
  • Запуск цього коду в Lazarus: SHChangeNotify (SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
  • Видалення файлу IconCache.db з AppData \ Local
  • Перемикання параметра "Always show icons, never thumbnails" Explorer з реєстру, розташованого тут: HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced, який зберігається в значенні IconsOnly
  • Зміна розміру значка з реєстру і назад, розташованого тут: HKEY_CURRENT_USER \ Control Panel \ Desktop \ WindowMetrics, який зберігається в значенні Shell Icon Size
  • Це посилання дає очевидне рішення в Delphi, яке я не зміг перетворити в Lazarus: http://www.aha-soft.com/faq/q18.htm
  • Мені відомо про кешованих файлах db тут: AppData \ Local \ Microsoft \ Windows \ Explorer, хоча я не впевнений, що вони можуть допомогти, спроба видалити деякі з них є неможливою, оскільки вони можуть бути заблоковані і т.д.
  • Перейменування папки, а потім перейменування на оригінальне ім'я.
  • Клацніть правою кнопкою миші пусте місце в провіднику Windows і виберіть "Оновити", схоже, не оновлює значок папки.

Також спробували виконати деякі з перерахованих вище в поєднанні з удачею.

питання

При зміні значка папки безпосередньо з Провідника Windows, використовуючи контекстне меню властивостей і вкладку налаштування, при застосуванні і закриття цього діалогового вікна значок папки змінюється практично відразу, не відбувається закриття explorer.exe або перезапуску Windows, відбувається зміна дуже скоро.

Як я можу домогтися цього з свого застосування програмно так само, як це робить Windows Explorer? Чи є спосіб дізнатися, як це робить Windows Explorer?

Моя операційна система - це Windows 10, яка може пояснити, чому деякі зі старих методів не працюють для мене.

Як я можу домогтися цього з свого застосування програмно так само, як це робить Windows Explorer?
Чи є спосіб дізнатися, як це робить Windows Explorer?

Дополнительная информация

rss
Карта