在nsis FUnction un.oninit 中使用nsprocess::FIndProcess 查询两个程序TM3C.exe,TM3CCAM.exe是否正在运行,若在运行Message Box输出程序正在运行是否强行关闭并继续卸载,同意后使用nsProcess::KillProcess关闭程序
时间: 2023-11-22 20:52:54 浏览: 96
nsis进程运行检测和结束进程插件
可以使用以下代码实现:
```
Function un.onInit
; 查询 TM3C.exe 是否正在运行
nsProcess::FindProcess "TM3C.exe" $R0
${If} $R0 == "ERROR" ; 查询失败
DetailPrint "Failed to find process TM3C.exe"
${ElseIf} $R0 != "" ; 查询成功且 TM3C.exe 正在运行
MessageBox MB_YESNO|MB_ICONEXCLAMATION "TM3C.exe is currently running. Do you want to force close it and continue uninstallation?" IDYES kill_tm3c IDNO skip_tm3c
${EndIf}
; 查询 TM3CCAM.exe 是否正在运行
nsProcess::FindProcess "TM3CCAM.exe" $R1
${If} $R1 == "ERROR" ; 查询失败
DetailPrint "Failed to find process TM3CCAM.exe"
${ElseIf} $R1 != "" ; 查询成功且 TM3CCAM.exe 正在运行
MessageBox MB_YESNO|MB_ICONEXCLAMATION "TM3CCAM.exe is currently running. Do you want to force close it and continue uninstallation?" IDYES kill_tm3ccam IDNO skip_tm3ccam
${EndIf}
Goto done
; 强制关闭 TM3C.exe 并继续卸载
kill_tm3c:
nsProcess::KillProcess $R0
Goto skip_tm3c
; 跳过关闭 TM3C.exe 并继续卸载
skip_tm3c:
; 强制关闭 TM3CCAM.exe 并继续卸载
kill_tm3ccam:
nsProcess::KillProcess $R1
Goto skip_tm3ccam
; 跳过关闭 TM3CCAM.exe 并继续卸载
skip_tm3ccam:
done:
FunctionEnd
```
以上代码使用了 `nsProcess::FindProcess` 查询进程是否正在运行,如果查询到进程正在运行,则弹出消息框询问用户是否强制关闭程序并继续卸载,用户点击“是”按钮则使用 `nsProcess::KillProcess` 强制关闭程序,并继续卸载。
阅读全文