Я использую макрос, определенный здесь , в Windows 7, однако он всегда возвращает 1.
Вот как я его называю:
!insertmacro FindProc $processFound "MyApp.exe"
MessageBox MB_OK $processFound
IntCmp $processFound ${FindProc_FOUND} +1 +3 +3
MessageBox MB_ICONEXCLAMATION|MB_OK "Please close the app before running this setup." /SD IDOK
Abort
Это кажется довольно простым по сравнению с возня с WMI, и метод FindProcDLL, перечисленный на той же странице, больше не работает (даже версия NSIS Unicode).Так почему этот метод всегда возвращает 1?Я отдельно проверил, что
tasklist /nh /fi "IMAGENAME eq MyApp.exe" | find /i "MyApp.exe"
возвращает 1 и 0 в зависимости от того, запущено приложение или нет.
Обновление : я использовал ExecWait стот же результат.
Обновление 2 : пробовал с помощью nsProcess от здесь , как показано ниже -
nsProcess::_FindProcess "myprogram.exe" $R0
MessageBox MB_OK $R0
Это всегда отображается как пустое.Я нигде не объявил $ R0.Есть ли где-то синтаксическая ошибка или она также не работает в Windows 7?