我要写一个杀进程的程序,搜索后发现了这段程序''用于结束外部进程,hCloseWnd 是要结束的程序的主窗口的 HWND
Public Function TernamiteProcessByHWND(ByVal hCloseWnd As Long) As Boolean
Dim hProcessID As Long
Dim hProcess As Long
On Error GoTo PROC_EXIT
If hCloseWnd = 0 Then GoTo PROC_EXIT
If GetWindowThreadProcessId(hCloseWnd, hProcessID) = 0 Then GoTo PROC_EXIT
hProcess = OpenProcess(PROCESS_TERMINATE, False, hProcessID)
If hProcess = 0 Then GoTo PROC_EXIT
If TerminateProcess(hProcess, 0&) = 0 Then GoTo PROC_EXIT
TernamiteProcessByHWND = True
PROC_EXIT:
If Err.Number <> 0 Then
Debug.Print Err.Description
Err.Clear
End If
End Function 有一点看不懂,当hProcess = 0的时候是什么问题,我的程序就是hProcess返回值为0,所以选择的进程杀不掉。
Public Function TernamiteProcessByHWND(ByVal hCloseWnd As Long) As Boolean
Dim hProcessID As Long
Dim hProcess As Long
On Error GoTo PROC_EXIT
If hCloseWnd = 0 Then GoTo PROC_EXIT
If GetWindowThreadProcessId(hCloseWnd, hProcessID) = 0 Then GoTo PROC_EXIT
hProcess = OpenProcess(PROCESS_TERMINATE, False, hProcessID)
If hProcess = 0 Then GoTo PROC_EXIT
If TerminateProcess(hProcess, 0&) = 0 Then GoTo PROC_EXIT
TernamiteProcessByHWND = True
PROC_EXIT:
If Err.Number <> 0 Then
Debug.Print Err.Description
Err.Clear
End If
End Function 有一点看不懂,当hProcess = 0的时候是什么问题,我的程序就是hProcess返回值为0,所以选择的进程杀不掉。
解决方案 »
- 如何用installshield做vb数据库的打包程序?着急中
- 数据环境如果太多杂碎,有问题吗??????????
- 先来提个问题:SELECT INTO的问题
- 在线等待(100)往一个表的字段赋值,怎么不行啊!
- 请各位老大帮帮忙
- 怎样去掉右上角的vb图标?
- 如何屏蔽三个系统按钮(最小化、最大化、关闭),但不能使标题栏消失?
- 如何把数据库中的imga用ADO2.5提出后不放入硬盘直接给图片宽或imga控件啊
- 想请教一下有什么办法可以自动输入字符串到FLASH中的文本框里面吗
- vb中如何用ADO建立Access数据库
- 请大家推荐一款好用的显示曲线和饼状图,柱状图控件
- 这样的MDI Form问题,有没有办法解决?
Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
说明
打开一个现有进程的句柄
返回值
Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastError
参数表
参数 类型及说明
dwDesiredAccess Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle Long,如句柄能够由子进程继承,则为TRUE
dwProcessId Long,要打开那个进程的进程标识符
注解
这个函数经常用来打开一个要进行同步的进程
//有一点看不懂,当hProcess = 0的时候是什么问题
说明OpenProcess函数执行失败,所以转向错误处理语句,不过,建议用Err对象的GetLastError属性获取GetLastError的值。
PostMessage与sendmessage作用差不多。