是否可以使用[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]部分中。

10-07 19:10