昇格したセットアップ (Windows Seven 上) から C# で記述された実行中のアプリケーションにカスタム メッセージを送信しようとしています。
残念ながら、このメッセージは C# アプリでは受信されません。
これは、セットアップとアプリが別のユーザーで実行されているためですか? どうすればこれを解決できますか?
簡単にするには:
// --- C# code ---
private const int WM_CUSTOM_CLOSE = 0x400 + 0x500;
private const int CUSTOM_CLOSE_WPARAM = 0x1;
private const int CUSTOM_CLOSE_LPARAM = 0x2;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_CUSTOM_CLOSE)
{
int wp = m.WParam.ToInt32();
int lp = m.LParam.ToInt32();
if (wp == CUSTOM_CLOSE_WPARAM && lp == CUSTOM_CLOSE_LPARAM)
{
Debug.WriteLine("Close application");
Close();
}
}
base.WndProc(ref m);
}
// --- INNO SETUP code ---
const
WM_USER = $400;
WM_CUSTOM_CLOSE = WM_USER + $500;
WM_CUSTOM_WPARAM = $1;
WM_CUSTOM_LPARAM = $2;
function InitializeSetup(): Boolean;
begin
SendNotifyMessage(HWND_BROADCAST, WM_CUSTOM_CLOSE,
WM_CUSTOM_WPARAM, WM_CUSTOM_LPARAM);
end;