2012-03-12 2 views
0

내 응용 프로그램에서 일부 폴더를 만들고 아이콘을 특정 작업에 따라 변경해야합니다. SHChangeNotify를 사용하여 폴더에 알리는 방법

나는 아래의 기능을 사용하기 위해 시도하고 내가 새로 고쳐지고 SHChangeNotify(SHCNE_ASSOCCHANGED, 0x1000, 0,0);, 전체 데스크탑을 사용하는 경우는 폴더

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNE_ALLEVENTS | SHCNE_UPDATEIMAGE | SHCNE_UPDATEDIR |SHCNF_PATH | SHCNF_FLUSHNOWAIT, L"C:\\Music\\Test", 0);

새로 고침 아니에요 보인다.

폴더를 새로 고치는 가장 좋은 방법을 알려주세요.

답변

1

아마도 잘못된 기능을 사용하고 계신 것 같습니다. 특히 SHCNE_ASSOCCHANGED의 설명서에는 uFlags 매개 변수에 "SHCNF_IDLIST"을 지정해야하며 dwItem1 및 dwItem2는 사용되지 않으므로 NULL이어야합니다. " SHCNF_IDLIST을 전달하지 않으며 dwItem1NULL이 아닌 경로 문자열입니다. 또한 두 번째 매개 변수는 단지 SHCNF_* 플래그의 조합이어야합니다. 잘못된 SHCNE_* 플래그를 추가하고 있습니다.

L"C:\\Music\\Test"에 파일을 쓰고있는 경우 Explorer에 알리려면 SHCNE_CREATE을 사용하십시오. 폴더를 추가하면 SHCNE_MKDIR을 사용하십시오. 두 경우 모두, dwItem1 그것이에서 만든 것 아닌 상위 폴더 생성 된 항목에의 패스해야

+1

MSalters에게 감사드립니다. 변경을 수행하고 테스트 해 보겠습니다. – kanden

+0

솔루션이 제대로 작동하는 것 같지만 다른 모듈을 마친 후에는 전체 테스트를 수행 할 수 있습니다. – kanden

+0

내 응용 프로그램을 지금 테스트 할 준비가되었습니다. 나는 아직도 작동하지 않는 당신의 제안을 지워 버렸습니다, 새로운 아이콘들은 디플레이이가 아닙니다. – kanden

0

이 SHChangeNotify 시도 (SHCNE_UPDATEDIR, SHCNF_PATH | SHCNF_FLUSHNOWAIT, "경로", NULL을).; "Path"는 업데이트 할 폴더입니다.

관련 문제