문제

다음을 사용하는 Windows 셸 확장이 있습니다. IShellIconOverlayIdentifier 파일 및 폴더에 오버레이 아이콘을 표시하는 인터페이스입니다.내 확장은 약간 비슷합니다 거북이CVS 또는 거북이SVN.

때로는 Windows 탐색기에서 모든 아이콘을 다시 그리도록 해야 할 때가 있습니다.그러기 위해 나는 전화한다. SHChangeNotify 이와 같이:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)

열려 있는 모든 탐색기 창의 바탕 화면과 오른쪽 창을 새로 고칩니다.탐색기 창 왼쪽에 있는 폴더 트리는 새로 고쳐지지 않습니다.

그래서 보내려고 했는데 WM_설정변경 이와 같이:

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 

Vista에서는 폴더 트리가 새로 고쳐지지만 오른쪽 창은 새로 고쳐지지 않습니다.

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

누구든지 이 작업을 더 잘 수행하는 방법에 대한 아이디어가 있습니까?

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

배상 SHCNE_ASSOCCHANGED Explorer를 머리 위로 곤봉으로 치는 것과 비슷합니다.이로 인해 전체 데스크탑이 매우 격렬하게 새로 고쳐지고 열려 있는 Explorer 창이 스크롤 위치에서 느슨해지게 됩니다.좀 덜 폭력적인 것도 있나요?

도움이 되었습니까?

해결책

누구 든지이 작업을 더 잘하는 방법이 있습니까?

개인적으로 나는 모른다. 당신은 비슷한 일을하는 거북이 프로그램을 언급하기 때문에 훌륭한 출발점은 그들이 소스에서 무엇을하는지 살펴 보는 것입니다 :)

이 문제를 처리하는 관련 소스 파일로 보입니다.

나는 RebuildIcons 각각의 방법은 다음과 같습니다.

  1. 쉘 아이콘 크기 또는 색 깊이를 임시 값으로 설정
  2. 설정 변경을 방송하여 모든 Windows를 업데이트합니다
  3. 쉘 아이콘 크기 또는 색 깊이를 원래 값으로 재설정합니다.
  4. 설정 변경 방송으로 모든 창을 두 번째로 업데이트합니다.

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

다른 팁

spy++를 사용하여 Windows 탐색기에서 F5를 누를 때 어떤 WM_COMMMAND 메시지가 전송되는지 확인하거나 보기/새로 고침에 사용되는 메뉴 메시지를 찾으세요.

그런 다음 FindWindow를 사용하여 원하는 탐색기 창을 가져오고 이전에 기록된 WM_COMMAND 등 메시지를 여기에 보냅니다.

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

F5 키 코드와 함께 WM_Keydown 메시지를 모든 열린 Explorer Windows에 보낼 수도 있습니다. 그래도 이것은 약간의 해킹입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top