在测试期间偶然遇到一个问题,有时卸载不干净,及时强制删除也不行,经过多次测试终于发现原来是程序没退出造成。先前的一个版本是调用IS自带API FindWindow实现的,而现在情况是,程序运行时间长窗口销毁了而进程却在(当然这也是程序本身的问题,但遇到此问题不得不想办法解决),方案只有一个枚举进程,看进程是否还在来判断软件是否退出,当然这也有一个问题,如果有相同进程名字的程序存在就会出问题。
在请教了几位朋友后,得到的答复是加载外部API来枚举进程进而获取进程名,IS帮助给的代码如下:
至此又一个问题出现EnumProcessModules得到进程句柄是正确的,但获取GetModuleFileNameExA却是空,实在无奈。。。在多次检查不出问题的时候,果断用另一种方法,代码如下:
在调用时先声明外部函数,注册DLL即可,至此问题结束。至于是枚举窗口还是进程都有根据实际情况来定。。。