Windows 탐색기를 프로그래밍 방식으로 새로 고치려면 어떻게 해야 합니까?
-
22-07-2019 - |
문제
다음을 사용하는 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 창이 스크롤 위치에서 느슨해지게 됩니다.좀 덜 폭력적인 것도 있나요?
해결책
누구 든지이 작업을 더 잘하는 방법이 있습니까?
개인적으로 나는 모른다. 당신은 비슷한 일을하는 거북이 프로그램을 언급하기 때문에 훌륭한 출발점은 그들이 소스에서 무엇을하는지 살펴 보는 것입니다 :)
이 문제를 처리하는 관련 소스 파일로 보입니다.
- 거북이 - Shellutils.cpp
- TortoisesVn -Shellupdater.CPP (사용자 이름 : "게스트", 비밀번호 : "")
나는 RebuildIcons
각각의 방법은 다음과 같습니다.
- 쉘 아이콘 크기 또는 색 깊이를 임시 값으로 설정
- 설정 변경을 방송하여 모든 Windows를 업데이트합니다
- 쉘 아이콘 크기 또는 색 깊이를 원래 값으로 재설정합니다.
- 설정 변경 방송으로 모든 창을 두 번째로 업데이트합니다.
아마도 이것은 XP에서 일을하는 트릭의 일부일 것입니다.
다른 팁
spy++를 사용하여 Windows 탐색기에서 F5를 누를 때 어떤 WM_COMMMAND 메시지가 전송되는지 확인하거나 보기/새로 고침에 사용되는 메뉴 메시지를 찾으세요.
그런 다음 FindWindow를 사용하여 원하는 탐색기 창을 가져오고 이전에 기록된 WM_COMMAND 등 메시지를 여기에 보냅니다.
이것은 모든 종류의 Windows 프로그램을 제어하는 재미있는 방법입니다.
F5 키 코드와 함께 WM_Keydown 메시지를 모든 열린 Explorer Windows에 보낼 수도 있습니다. 그래도 이것은 약간의 해킹입니다.