使用SendMessage关闭一个窗口时,如果该窗口处于"无响应"中,那么SendMessage就没办法了~
不知道有没什么好办法解决~

解决方案 »

  1.   

    用API函数TerminateProcess强制关闭进程,用OpenProcess可以得到Process的Handle,用TerminateProcess关闭程序Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As LongPrivate Sub Command1_Click() 
       x = Shell("NotePad.EXE", 1) 
    End Sub 
         
    Private Sub Command2_Click() 
       hProgram = OpenProcess(0, False, x) 
       TerminateProcess hProgram, 0 
    End Sub
      

  2.   

    对,可以用TerminateProcess强制关闭进程
      

  3.   

    这类问题,本论坛上很多。
    1、PostMessage安全性好一些。当然,成功率也不太高。2、成功率高的话,当然是不计后果的结束进程啦。
    TerminateProcess在9X系统下可行(但极不安全),在NT内核(NT/2K/XP/2003)系统下有一点点小麻烦(安全性也有限)。两种方法区别,举个例子说明吧:
    前者相当于“自杀”,而且若关闭的不是程序的主窗体的话,只能相当于“自残”;
    后者相当于“他杀”。