在測試期間偶然遇到一個問題,有時卸載不乾淨,及時強制刪除也不行,經過多次測試終於發現原來是程序沒退出造成。先前的一個版本是調用IS自帶API FindWindow實現的,而現在情況是,程序運行時間長窗口銷燬了而進程卻在(當然這也是程序本身的問題,但遇到此問題不得不想辦法解決),方案只有一個枚舉進程,看進程是否還在來判斷軟件是否退出,當然這也有一個問題,如果有相同進程名字的程序存在就會出問題。
在請教了幾位朋友後,得到的答覆是加載外部API來枚舉進程進而獲取進程名,IS幫助給的代碼如下:
至此又一個問題出現EnumProcessModules得到進程句柄是正確的,但獲取GetModuleFileNameExA卻是空,實在無奈。。。在多次檢查不出問題的時候,果斷用另一種方法,代碼如下:
在調用時先聲明外部函數,註冊DLL即可,至此問題結束。至於是枚舉窗口還是進程都有根據實際情況來定。。。