安裝或者卸載時檢測軟件是否在運行

      在測試期間偶然遇到一個問題,有時卸載不乾淨,及時強制刪除也不行,經過多次測試終於發現原來是程序沒退出造成。先前的一個版本是調用IS自帶API FindWindow實現的,而現在情況是,程序運行時間長窗口銷燬了而進程卻在(當然這也是程序本身的問題,但遇到此問題不得不想辦法解決),方案只有一個枚舉進程,看進程是否還在來判斷軟件是否退出,當然這也有一個問題,如果有相同進程名字的程序存在就會出問題。

      在請教了幾位朋友後,得到的答覆是加載外部API來枚舉進程進而獲取進程名,IS幫助給的代碼如下:

  

 

至此又一個問題出現EnumProcessModules得到進程句柄是正確的,但獲取GetModuleFileNameExA卻是空,實在無奈。。。在多次檢查不出問題的時候,果斷用另一種方法,代碼如下:

 

 

 

在調用時先聲明外部函數,註冊DLL即可,至此問題結束。至於是枚舉窗口還是進程都有根據實際情況來定。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章