2011-06-24 10 views
7

Próbuję zmienić ikonę folderu programowo, zmieniając plik desktop.ini w folderze. Mogę ustawić ikonę, ale nie mogę jej zmienić natychmiast poprzez zmianę "IconIndex". Ikona zmienia się również w kilka sekund później.Jak mogę natychmiast ponownie załadować ikonę folderu, gdy zmieni się plik desktop.ini

Czy jest ktoś, kto może natychmiast zmienić ikonę?

+3

spojrzeć SHChangeNotify API i odnośników związanych SO stanowisk. – 9dan

+1

Znalazłem rozwiązanie dotyczące własnego pytania. Właśnie tego używa ** funkcja Win32. SHGetSetFolderCustomSettings. –

+2

Możesz napisać to jako kompletną odpowiedź poniżej. Ułatwi to odwiedzającym to pytanie i ta (twoja odpowiedź) zostanie również poddana pod głosowanie. –

Odpowiedz

1

Już odpowiedziałem, komentując odpowiedź na moje pytanie wcześniej. Dla większej wygody ponownie napiszę odpowiedź.

Jeśli chcesz dokonać jakiejkolwiek zmiany wyglądu dowolnego folderu za pomocą Desktop.ini, użyj niektórych funkcji powłoki Win32. Nie powinieneś próbować bezpośrednio edytować pliku Desktop.ini. Nie powoduje żadnych zmian w wyglądzie żadnego folderu.

Możesz uzyskać więcej informacji o funkcjach powłoki Win32 za pomocą poniższego linku.

http://msdn.microsoft.com/en-us/library/windows/desktop/bb776426(v=vs.85).aspx

1

Przykład:

SHFOLDERCUSTOMSETTINGS fcs = {0}; 
fcs.dwSize = sizeof(SHFOLDERCUSTOMSETTINGS); 
fcs.dwMask = FCSM_ICONFILE; 
fcs.pszIconFile = iconPath; 
fcs.cchIconFile = 0; 
fcs.iIconIndex = iconIndex; 
SHGetSetFolderCustomSettings(&fcs, folderPath, FCS_FORCEWRITE); 
0

Poniższa procedura działa dobrze dla mnie (na Windows 7):

  1. plik Zmień desktop.ini
  2. Issue SHChangeNotify (SHCNE_DELETE, SHCNF_PATH, "ścieżka_do/desktop.ini", 0);
  3. ico Folder zostanie odświeżona

Pamiętaj, aby podać Shlobj.h

+0

Niewłaściwe uwzględnienie. Powinien to być Shlwapi.h. –

+0

NIE, to wcale nie działa. 5 godzin na komputerze w nocy działa jak miraż –

+0

Każdy pomysł Jak odświeżyć ikony folderów po zmianie na desktop.ini? SHGetSetFolderCustomSettings nie jest obsługiwany od okien XP. –

Powiązane problemy