我使用的宏定義here,在Windows 7中,但它始終返回1.NSIS- FindProc始終返回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從here試過, -
nsProcess::_FindProcess "myprogram.exe" $R0
MessageBox MB_OK $R0
這始終顯示爲空白。我還沒有在其他地方宣佈$ R0。某處是否有語法錯誤,或者這在Windows 7上也不起作用?
前兩名zip文件的FindProcDLL頁面上爲我正常工作與官方2.46 ... – Anders
在Windows 7?我已經嘗試了官方的NSIS和Unicode版本(包括插件的unicode版本),而且都沒有工作。 – Rex
那nsProcess語法必須是錯誤的,你不能在這樣的寄存器中接收數據,刪除var並在調用後嘗試彈出(請參閱nsProcess.nsh) – Anders