如题, 部分代码如下:
Public Const TH32CS_SNAPHEAPLIST = &H1
Public Const TH32CS_SNAPPROCESS = &H2
Public Const TH32CS_SNAPTHREAD = &H4
Public Const TH32CS_SNAPMODULE = &H8
Public Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Public Const TH32CS_INHERIT = &H80000000
Public Const MAX_PATH As Integer = 260
Public Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntTreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End TypePublic Const PROCESS_TERMINATE = &H1
Public Const PROCESS_ALL_ACCESS = &H1F0FFFPublic Declare Function OpenProcess Lib "kernel32 " Alias "OpenProcess " (ByVal dwDesiredAccess As Integer, ByVal blnheritHandle As Integer, ByVal dwAppProcessId As Integer) As Integer
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32 " (ByVal hProcess As Long, ByVal uExitCode As Long) As LongDim proc As PROCESSENTRY32
Dim snap As Long
Dim exename As String
Dim theLoop As Long
Dim hand%
snap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
proc.dwSize = Len(proc)
theLoop = Process32First(snap, proc)
While theLoop <> 0
exename = proc.szExeFile
If Left(exename, 12) = "iexplore.exe" Then
hand = OpenProcess(PROCESS_TERMINATE, True, proc.th32ProcessID)
Debug.Print hand
TerminateProcess hand, 0
End If
CloseHandle snap取得的hand值总是0,请高手指点啊
Public Const TH32CS_SNAPHEAPLIST = &H1
Public Const TH32CS_SNAPPROCESS = &H2
Public Const TH32CS_SNAPTHREAD = &H4
Public Const TH32CS_SNAPMODULE = &H8
Public Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Public Const TH32CS_INHERIT = &H80000000
Public Const MAX_PATH As Integer = 260
Public Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntTreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End TypePublic Const PROCESS_TERMINATE = &H1
Public Const PROCESS_ALL_ACCESS = &H1F0FFFPublic Declare Function OpenProcess Lib "kernel32 " Alias "OpenProcess " (ByVal dwDesiredAccess As Integer, ByVal blnheritHandle As Integer, ByVal dwAppProcessId As Integer) As Integer
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32 " (ByVal hProcess As Long, ByVal uExitCode As Long) As LongDim proc As PROCESSENTRY32
Dim snap As Long
Dim exename As String
Dim theLoop As Long
Dim hand%
snap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
proc.dwSize = Len(proc)
theLoop = Process32First(snap, proc)
While theLoop <> 0
exename = proc.szExeFile
If Left(exename, 12) = "iexplore.exe" Then
hand = OpenProcess(PROCESS_TERMINATE, True, proc.th32ProcessID)
Debug.Print hand
TerminateProcess hand, 0
End If
CloseHandle snap取得的hand值总是0,请高手指点啊
解决方案 »
- Winsock 掉包了?
- 用MSCOMM发送大于128的ACSII字符,接收不到,而小于128能接收到?
- 急!如何防止别人通过程序恶意关闭ERP进程 或如何防止别人通过window任务管理器强制关闭ERP进程?能否在我的ERP系统中加上程序加以防止?
- 如何读取网上的文本文件??
- 求一时间函数,郁闷中,好久没有用vb了,一朋友问上我了,具体情况进帖详谈~~~
- 配置了数据环境,连接和报表,如何用代码控制打印?想改其中的一个域的值
- 怎么压缩带密码的access2000数据库?
- 保存照片的问题??
- 怎样保存CSDN的贴子(XML网页)?
- 请问怎样将Big5转换成GB,并且可以将GB转换成Big5
- 工程文件丢失
- 求一个VB6的快捷键
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long'进程号
th32DefaultHeapID As Long'堆栈号
th32ModuleID As Long'模块号
cntThreads As Long
th32ParentProcessID As Long'父进程号
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End TypePrivate Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
'在进程队列中获取首个进程的地址
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
'进程队列指针下移
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
'打开进程
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
'关闭进程
Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
'释放句柄
Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Private Const TH32CS_SNAPPROCESS = &H2&Private Sub KillProcess(sProcess As String)
Dim lSnapShot As Long
Dim lNextProcess As Long
Dim tPE As PROCESSENTRY32
'创建进程队列快照
lSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
'如果队列不为空则搜索
If lSnapShot <> -1 Then
'获取进程控制块
tPE.dwSize = Len(tPE)
'取首个进程的地址
lNextProcess = Process32First(lSnapShot, tPE)
'循环搜索
Do While lNextProcess
'判断是否索索到进程
If LCase$(sProcess) = LCase$(Left(tPE.szExeFile, InStr(1, tPE.szExeFile, Chr(0)) - 1)) Then
'结束进程
Dim lProcess As Long
Dim lExitCode As Long
lProcess = OpenProcess(1, False, tPE.th32ProcessID)
TerminateProcess lProcess, lExitCode
CloseHandle lProcess
End If
'进程指针下移一位,搜索下一个进程
lNextProcess = Process32Next(lSnapShot, tPE)
Loop
'释放进程句柄
CloseHandle (lSnapShot)
End If
End Sub