在升级期间从inno设置轻轻关闭应用程序的最佳方法

时间:2015-03-05 07:31:36

标签: delphi inno-setup

我已经使用这段代码多年来在从INNO SETUP升级期间关闭我正在运行的应用程序,但现在它与某些版本的应用程序不兼容。 任何想法,什么是关闭运行过程(delphi应用程序)的更好方法? 我需要在静默设置期间使其工作正常,因此没有对话框...

  h := FindWindowByWindowName('Myapp');
  v1 := $0016; //WM_ENDSESSION
  v2 := $80000000;// ENDSESSION_LOGOFF
  if h<>0 then PostMessage (h,v1,1,v2);

2 个答案:

答案 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);
...