0
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;
비슷한 문제가 있습니다. 해결 방법은 다음과 같습니다. 프로그램 간 통신을 위해 이름이 지정된 파이프가 이미 열려 있습니다. 거기에 제어 메시지를 추가하여 내 응용 프로그램을 닫습니다 ... inno-setup에서 설치 한 prog exe를 전체 응용 프로그램을 시작하지 않고 이름이 지정된 파이프에 연결하고 종료 할 다른 인스턴스에 알려주는 param으로 호출합니다. – DarkSquirrel42
@ DarkSquirrel42 : 예제를 게시 할 수 있습니까? Inno Setup의 이름이 붙여진 파이프는 나를위한 악몽입니다. 감사합니다 – Marco
또한 내 응용 프로그램에서 만든 수동 재설정 이벤트를 사용하여 설치 프로그램에서 설정, 생각했지만 InnoSetup OpenEvent를 사용하는 방법을 모르겠습니다 ... – Marco