innosetup 安裝前、卸載前判斷是否有進程正在運行<轉>


[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM