是否可以使用[Code]
部分中的Inno Setup刷新桌面?
通过使用SendMessage
还是以某种方式使用SHChangeNotify
?
最佳答案
您可以通过在相应的DLL中调用Windows API中的任何函数。 Pascal DLL语法记录在here中。与往常一样,可以在MSDN上找到 SHChangeNotify
函数的文档。该函数可以在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;
现在,您可以在任何喜欢的地方调用
SendChangeNotification
,例如在event function中。更新
上面的文本回答了您的问题,即如何“在[代码]部分中使用Inno Setup刷新桌面”。但是您知道Inno Setup可以自动为您刷新桌面吗?只需写
ChangesAssociations=yes
在
[Setup]
部分中。