3

[Code]セクションで Inno Setup を使用してデスクトップを更新することは可能ですか?

を使用SendMessageするか、何らかの方法で使用しSHChangeNotifyますか?

4

1 に答える 1

4

適切な DLL で呼び出すことにより、Windows API の任意の関数を呼び出すことができます。Pascal DLL の構文は、ここに記載されています。関数のドキュメントは、SHChangeNotify通常どおり MSDN にあります。この関数は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 に答える