innosetup安裝之前關閉進程


    InnoSetup覆蓋安裝的時候可能會因為源程序正在運行而安裝失敗,以下腳本能夠關閉原運行進程。

[code]
// 安裝前檢查關閉**進程
function InitializeSetup():Boolean;
//進程ID
var appWnd: HWND;
begin
  Result := true;
  //Log('Checking If Running...');
  //根據窗體名字獲取進程ID
  appWnd := FindWindowByWindowName('IE Scavenger');
  if (appWnd <> 0) then
     //進程存在,關閉
     begin
        //Log('Is Runing...');
        //給進程發送關閉消息
        PostMessage(appWnd, 18, 0, 0);       // quit
     end else
     //進程不存在 
     begin 
        //Log('Not Runing...');
     end;
end;

    InitializeSetup 函數在安裝程序初始化時調用,返回 False 中斷安裝,返回 True 反之。

    FindWindowByWindowName 獲取窗口名與指定字串匹配的頂層窗口的句柄。這個函數不搜索子窗口 ,且不執行區分大小寫搜索。如果沒有找到窗口則返回 0。

    運行流程就是根據窗口名獲取正在運行的程序,如果已經運行則強制關閉。相應的卸載的時候如果需要先關閉程序,可以調用編寫InitializeUninstall函數,關閉源程序。這種是無痛關閉,沒有任何提示。你可以自己添加提示,引導用戶進行操作。

 


免責聲明!

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



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