2011-05-01 4 views
1

[코드] 섹션에서 Inno Setup을 사용하여 바탕 화면을 새로 고칠 수 있습니까?Inno 설치 화면 새로 고침

SendMessage를 사용하거나 어떻게 든 SHChangeNotify를 사용 하시겠습니까?

답변

2

Windows API에서 함수를 호출하려면 적절한 DLL에서 함수를 호출하면됩니다. 파스칼 DLL 구문은 here으로 문서화되어 있습니다. SHChangeNotify 함수에 대한 문서는 MSDN에서 평소대로 찾을 수 있습니다. 이 함수는 Shell32.dll에 있습니다 (놀랄 일이 아닙니다!).

[Code] 
const 
    SHCNE_ASSOCCHANGED = $08000000; 
    SHCNF_IDLIST = $00000000; 

procedure SHChangeNotify(wEventID: integer; uFlags: cardinal; dwItem1, dwItem2: cardinal); 
external '[email protected] stdcall'; 

procedure SendChangeNotification; 
begin 
    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0); 
end; 

이제 당신은 event function에서 예를 들어, 어디서나 당신이 좋아 SendChangeNotification를 호출 할 수 있습니다.

업데이트

텍스트는 위의 "[코드] 섹션에 이노 설정을 사용하여 바탕 화면을 새로 고침 '하는 방법, 귀하의 질문에 대답을 제공합니다. 하지만 Inno Setup을 사용하면 자동으로 바탕 화면을 새로 고칠 수 있다는 것을 알고 있습니까? 간단히 작성하십시오

ChangesAssociations=yes 

[Setup] 섹션에 작성하십시오.

+0

답장을 보내 주셔서 감사합니다. 그러나 어떻게 작동합니까? 내가 노력하고있는 순간 : 외부 'SHChangeNotify (0x8000000, 0x1000, 0, 0) @ Shell32.dll stdcall'; 하지만 구문 오류가 발생합니다. –

+0

@ s0mmer : 올바른 구문이 아닙니다. 첫째, 함수의 선언은 서명이 무엇인지, 함수가 어디에 위치하는지 (외부 인 경우)를 서술해야합니다. 함수를 호출 할 때 넣는 인수! 또한 MSDN은'SHCNE_ASSOCCHANGED'가'$ 1000'이 아닌 'SHCNF_IDLIST'와 함께 사용되어야한다고 말합니다. –

+0

완벽한! 고마워요! –

관련 문제