我的程序用TerminateProcess关闭一个进程,偶尔会出现关闭不了进程,请问当出现关闭失败该
怎么做才能把这个进程关闭掉

解决方案 »

  1.   

    Shell("pskill 要关闭的进程名字")
    试试
      

  2.   

    ......结束进程一般采用TerminateProcess函数,但是对于比较顽固的进程就要用非常规的手段来Kill了。
            我的方法是,先提高本程序为Debug级别的权限。再用TerminateProcess关闭,如果失败就枚举该进程中的线程并用TerminateThread关闭。然后再用TerminateProcess结束进程。这样就基本上可以关闭99%的非系统进程了。
    ......http://blog.csdn.net/Modest/archive/2006/10/11/1330505.aspx
      

  3.   

    不好意思 没说清楚,我的程序用TerminateProcess只关闭固定的一个进程,在程序运行过程中大部分都能
    够关闭这个固定的进程,但是偶尔 关闭不了
      

  4.   

    关闭进程:
    Shell "taskkill.exe /im a.exe /f", vbHide
      

  5.   

    直接使用DOS外部命令杀进程,例如:
    1、Shell "taskkill.exe /im a.exe /f", vbHide
    2、Shell "ntsd -c q -p " & CStr(lngfrmMainPID)    说明:lngfrmMainPID是进程句柄
      

  6.   

    做个循环:关闭--等待--检查
    如果没关闭从头执行..就不信整不死他。
    当然保证是常规的进程哦,否则要用我上面提到的非常规手段。
    更深一级的kill,那只有进入内核去折腾了。
    总之,没有关不掉的进程。