2009-03-15 4 views
19

파일과 폴더에 오버레이 아이콘을 표시하기 위해 IShellIconOverlayIdentifier 인터페이스를 사용하는 Windows 셸 확장이 있습니다. 내 확장 프로그램은 TortoiseCVS 또는 TortoiseSVN과 약간 비슷합니다.프로그래밍 방식으로 Windows 탐색기를 새로 고칠 수 있습니까?

때로는 Windows 탐색기에서 모든 아이콘을 다시 그려야합니다. 이 작업을 수행하려면이 같은 SHChangeNotify 전화 :

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL) 

이것은 열려있는 탐색기 윈도우의 바탕 화면과 오른쪽 창을 새로 고칩니다. 탐색기 창의 왼쪽에있는 폴더 트리를 새로 고치지 않습니다.

그래서 나는이 같은 WM_SETTINGCHANGE를 보내는 시도 : Vista에서

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 

이 폴더 트리를 새로 고쳐 아니지만 오른쪽 창.

SHChangeNotify() 다음에 WM_SETTINGCHANGE이 오는 조합은 Vista에서 아주 잘 작동하는 것 같습니다. 하지만 XP에서 폴더 트리가 표시되면 새로 고칠 수 없습니다.

아무에게도 더 좋은 방법이 있습니까?

XP에 대한 더 나은 솔루션이 있습니까?

발신 SHCNE_ASSOCCHANGED은 머리 위로 클럽 탐색기와 조금 비슷합니다. 이로 인해 바탕 화면 전체가 매우 격렬하게 새로 고침되고 탐색기 창을 열어서 스크롤 위치가 느슨해집니다. 조금 덜 폭력적인 것이 있습니까?

+0

XP 용 TweakUI에는 "복구 아이콘 캐시"옵션이 있습니다. SPY ++를 사용하면 그 기능을 볼 수 있습니다. –

+1

휴! 문제를 해결할 수 있었습니까? – A9S6

답변

7

아무에게도 아이디어가 없습니다. 더 나은 방법이 있습니까?

개인적으로 나는 잘 모른다. 비슷한 일을하는 Tortoise 프로그램에 대해 언급하기 때문에 출처에서 할 일을 살펴 보는 것이 좋습니다 :)

다음은이 문제를 처리하는 관련 소스 파일입니다 :

:

  1. 업데이트 모두에게 원래의 값으로 설정 변경을
  2. 재설정 쉘 아이콘 크기 나 색 농도를 브로드 캐스트하여
  3. 업데이트를 임시 값으로 모든 창을 쉘 아이콘 크기 나 색 농도를 설정 창 설정 변경의 브로드 캐스트로 두 번째로

아마도 이것은 XP에서 일하는 트릭의 일부입니다.

+1

더 좋은 방법이 없다는 것은 유감입니다. 우리가 자주하지 않기를 바래요! –

+0

Simon에게 도움을 주셔서 감사합니다. – HughE

+0

@jeffamaphone 우리는 이것을 너무 자주하지 않습니다. 대부분 하루에 몇 번. – HughE

0

사용 스파이 ++는 Windows 탐색기에서 F5 키를 누르거나보기에 사용되는 어떤 메뉴 메시지를 찾을 때

그런 다음 원하는 탐색기 창을 얻을 수를 FindWindow를 사용하여 새로 고침/메시지가 전송됩니다 WM_COMMMAND 무엇을보고 기록 WM_COMMAND를 보내 이전 등 메시지.

모든 종류의 Windows 프로그램을 제어하는 ​​재미있는 방법입니다.

+0

나는 그것을 시도했지만 아무런 유용한 것을 보여주지 못했다. 모든 항목을 삭제 한 다음 다시 추가하는 것처럼 보입니다. 그 길이로 갈 필요가없는 것은 분명합니다. 왜냐하면 디스플레이 모드를 다른 것으로 바꾼다면 뒤에서 "새로 고침"하기 때문입니다. ': - |' – Synetech

+0

Spy ++를 사용하여 이러한 변경 사항을 추적하고 기술적으로 가능하지만 실제 PITA입니다. 도구 사용에 익숙하지 않은 경우 많은 시간을 낭비 할 수 있습니다. –

0

또한 열려있는 모든 탐색기 창에 F5 키 코드가있는 WM_KEYDOWN 메시지를 보낼 수 있습니다. 이것은 약간의 해킹입니다.

+1

가장 간단한 방법은이 경우에는 최선의 방법이 아닙니다. – Idan

관련 문제