[Code] //安裝前判斷是否有進程正在運行,istask.dll文件與打包的exe文件一起 function RunTask(FileName: string; bFullpath: Boolean): Boolean; external 'RunTask@files:ISTask.dll stdcall delayload'; function KillTask(ExeFileName: string): Integer; external 'KillTask@files:ISTask.dll stdcall delayload'; function InitializeSetup(): Boolean; begin Result:= true; if RunTask('{#MyAppExeName}', false) then begin if MsgBox('安裝程序檢測到 {#MyAppName} 正在運行!'#13''#13'單擊“是”按鈕關閉程序並繼續安裝;'#13''#13'單擊“否”按鈕退出安裝!', mbConfirmation, MB_YESNO) = IDYES then begin KillTask('{#MyAppExeName}'); Result:= true; end else Result:= false; end else Result:= true; end; // 卸載前判斷進程是否在運行 function RunTaskU(FileName: string; bFullpath: Boolean): Boolean; external 'RunTask@{app}/ISTask.dll stdcall delayload uninstallonly'; function KillTaskU(ExeFileName: string): Integer; external 'KillTask@{app}/ISTask.dll stdcall delayload uninstallonly'; function InitializeUninstall(): Boolean; begin Result:= true; if RunTaskU('{#MyAppExeName}', false) then begin if MsgBox('卸載程序檢測到 {#MyAppName} 正在運行!'#13''#13'單擊“是”按鈕關閉程序並繼續卸載;'#13''#13'單擊“否”按鈕退出卸載!', mbConfirmation, MB_YESNO) = IDYES then begin KillTaskU('{#MyAppExeName}'); Result:= true; end else Result:= false; end else Result:= true; UnloadDll(ExpandConstant('{app}/ISTask.dll')); end;
轉:https://blog.csdn.net/dsp_daiyujie/article/details/11945871