3

是否可以使用该部分中的 Inno Setup 刷新桌面[Code]

通过使用SendMessage或以某种方式使用SHChangeNotify

4

1 回答 1

4

您可以通过在适当的 DLL 中调用 Windows API 中的任何函数来调用它。此处记录了 Pascal DLL 语法。与往常一样,可以在 MSDN 上找到该SHChangeNotify函数的文档。这个函数可以在Shell32.dll(不足为奇!)中找到。

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

procedure SHChangeNotify(wEventID: integer; uFlags: cardinal; dwItem1, dwItem2: cardinal);
external 'SHChangeNotify@shell32.dll stdcall';

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

现在您可以SendChangeNotification在任何您喜欢的地方调用,例如在事件函数中。

更新

上面的文字回答了您的问题,如何“在 [代码] 部分中使用 Inno Setup 刷新桌面”。但是您知道 Inno Setup 可以自动为您刷新桌面吗?简单地写

ChangesAssociations=yes

[Setup]节中。

于 2011-05-01T18:45:04.730 回答