用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
x = Shell("NotePad.EXE", 1)
End Sub
Private Sub Command2_Click()
hProgram = OpenProcess(0, False, x)
TerminateProcess hProgram, 0
End Sub
1、PostMessage安全性好一些。当然,成功率也不太高。2、成功率高的话,当然是不计后果的结束进程啦。
TerminateProcess在9X系统下可行(但极不安全),在NT内核(NT/2K/XP/2003)系统下有一点点小麻烦(安全性也有限)。两种方法区别,举个例子说明吧:
前者相当于“自杀”,而且若关闭的不是程序的主窗体的话,只能相当于“自残”;
后者相当于“他杀”。