Проверьте, запущено ли приложение или нет - PullRequest
0 голосов
/ 03 сентября 2010

Я использую innosetup для создания установки для моего приложения Windows. Перед началом установки мне нужно проверить, запущено ли уже приложение или нет. Я использовал следующий код, который не работает должным образом.

const
WM_CLOSE = 16;

Function InitializeSetup : Boolean;
var winHwnd: longint;
    retVal : boolean;
    strProg: string;
begin
  Result := true;
  try
    strProg := 'myApp.exe';
    winHwnd := FindWindowByWindowName(strProg);
    Log('winHwnd: ' + inttostr(winHwnd));
    if winHwnd <> 0 then
      retVal:=postmessage(winHwnd,WM_CLOSE,0,0);
      if retVal then begin
        MsgBox('Window is  not running', mbInformation, MB_OK);
        Result := True
        end
      else begin
       MsgBox('Window still open', mbInformation, MB_OK);
        Result := False;
 end;
  except
  end;

end;

Здесь winHwnd всегда имеет значение 0. Пожалуйста, дайте мне знать, что не так с этим кодом.

Спасибо, Манжу

1 Ответ

1 голос
/ 03 сентября 2010

InnoSetup имеет встроенную проверку, чтобы увидеть, запущено ли ваше приложение, посмотрите параметр AppMutex в разделе [Setup].Все, что вам нужно сделать, это создать именованный мьютекс в вашем приложении и указать имя этого мьютекса в вашем скрипте innosetup.InnoSetup выполнит проверку и отобразит само сообщение.

...