2013-05-02 3 views
0

Я нахожусь в Windows 8, и у меня есть код на C#, который меняет значок папки.Изменение значка папки занимает больше времени, чтобы показать обновленный значок

Это работает отлично, но требуется много времени для обновления. Я пытался использовать такие методы, как:

IntPtr path = Marshal.StringToHGlobalAuto(@"[FolderPath]"); 

SHChangeNotify(HChangeNotifyEventID.SHCNE_ATTRIBUTES, 
    HChangeNotifyFlags.SHCNF_PATHA, path, IntPtr.Zero); 

SHChangeNotify(HChangeNotifyEventID.SHCNE_UPDATEIMAGE, 
    HChangeNotifyFlags.SHCNF_DWORD, IntPtr.Zero, IntPtr.Zero); 

SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, 
    HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); 

Это, похоже, не влияет на значок папки. Он обновляет мой экран, но значок остается тем же самым значком. Через несколько минут я могу нажать F5, и он изменится на значок папки, который я указал.

Я видел некоторые действительно уродливые способы обойти это, но мне бы очень хотелось узнать, что скажет Windows «обновить» значок папки программно. Я видел, что Dropbox кажется мгновенным, и я думаю, что есть решение.

+0

вы нашли решение еще? У меня такая же проблема, работая с java. Любой вход поможет! – insanity

ответ

0

Чтобы изменить значок папки для этого нужно два шага для достижения этой цели:

Step 1. Create a desktop.ini file inside the folder for which to create the icon (the "Target Folder"). 
Step 2. Set the Target Folder's attribute to "System". 

Для выполнения этих шагов, создать два класса, то есть FolderIcon, который дирижирует шаги и IniWriter, который только имеет один статический метод, называемый WriteValue(), который обертывает функцию WritePrivateProfileString() Win32 API.

Для того, чтобы получить все эти вещи сделаны в правильном направлении, просто следовать этот код проекта учебника:

http://www.codeproject.com/Articles/9331/Create-Icons-for-Folders-in-Windows-Explorer-Using

+0

Это должен быть комментарий ... – MUG4N

+0

Подведите итог решения по ссылке в ответе. – Linuxios

+0

Спасибо за ответ, однако, как говорится в моем вопросе, я уже знаю, как это сделать, и он работает нормально. Вопрос в том, что для того, чтобы этот значок действительно изменился, требуется несколько минут. Я могу нажать F5 для обновления и т. Д., Но он все равно не изменится. Затем внезапно значок изменится на значок, который я указал. Мне нужно знать, какие функции окна мне нужно вызвать для принудительного обновления изображения. – hobeau