我已经使用这段代码多年来在从INNO SETUP升级期间关闭我正在运行的应用程序,但现在它与某些版本的应用程序不兼容。 任何想法,什么是关闭运行过程(delphi应用程序)的更好方法? 我需要在静默设置期间使其工作正常,因此没有对话框...
h := FindWindowByWindowName('Myapp');
v1 := $0016; //WM_ENDSESSION
v2 := $80000000;// ENDSESSION_LOGOFF
if h<>0 then PostMessage (h,v1,1,v2);
答案 0 :(得分:2)
在Windows Vista及更高版本中,您应该使用Windows重新启动管理器(https://msdn.microsoft.com/en-us/library/windows/desktop/aa373524.aspx)
InnoSetup直接支持它,检查[CloseApplications]指令。在安静模式下运行时,它将在不询问用户的情况下关闭应用程序。
答案 1 :(得分:0)
这似乎更好:
[Code]
const
WM_CLOSE = $0010;
...
if h <> 0 then
PostMessage(h, WM_CLOSE, 0, 0);
...