![]() |
VB关闭进程的两种方式
软件简介

大家好~~我是绿色闲情。今天给大家讲的是 结束进程的两种方式 很感谢黑鹰提供学习平台!
最近看了黑鹰的教程:《VB编写如何去关闭一个指定窗口》
本小菜深受启发。感觉很不错。
但是是通过查看窗体标题,然后结束对应进程。我们如果想关闭一个进程呢?
我先来给大家演示一下根据标题关进程的效果。
据标题结束进程:(代码有删简)
---------------------------------------------
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Declare Function PostMessage Lib "user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CLOSE = &H10
'上面为程序的声明部分(因为全局变量所以我们就把它写在一个模块中)
'我们把它放在TIME控件里。用来实现不断执行
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "我的电脑") '找到caption为我的电脑的窗口
Debug.Print winHwnd '用来调试 在立即窗口中输入winhnd
If winHwnd <> 0 Then '这里是判断窗口是否启动 如果窗口不存在那么值为0
RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&) '关闭窗口
Else
End If
End Sub
---------------------------------------------
好的。我来测试一下效果。
^_^ 是不是有熊猫烧香的味道?你只要把“我的电脑”改成想结束的标题即可。
这个方法是不错。但拿许多不显示标题的程序就没办法了。比如说CS
还有一个实现KillProcess的办法。就是直接查找进程名称名并作出判断
下面是相应的代码
根据进程名关闭:
---------------------------------------------
Option Explicit
'声明API
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 Type
Private 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
'我们也把它放到TIME控件里
Call KillProcess("notepad.exe") ' '我就那记事本做演示了
---------------------------------------------
好的。我来测试下
汗~~我忘记这个也是记事本了。。。。。。
成功~~~很简单吧?
希望大家能各取所长,综合利用。不要干坏事哦~~^_^
好的。教程就到这里。各位再见!
教程就到这里,欢迎大家来黑鹰做客! www.gxfa.com
By 绿色闲情
qq 358467188
软件下载地址
-  电信下载1
合作伙伴
相关动画
原创VB打造一个简单猜迷语软件
我用VB做一次骇客
用vb打造自己的qq登陆器(简单修改版)
VB天气预报器
推荐动画
· delphi窗体组件第二课
· delphi窗体组件第一课
· 入侵传奇SF教程
· 网吧提权+不要钱上网
· 揭穿回忆刷QB工具教程
· 盗连Network电视地址亲手打
· SHOPEX最新漏洞利用
· 批量入侵PHP网站
· 鸽子上兴通用超强免杀
· 最新免费拿半年QQ秀
· XP优化以及各种优化工具
· 如何盗取网银密码
· Domain简单网站入侵
· 免费QQ客服自动回复
热门动画
· 入侵传奇SF教程 (3250)
· 易语言flash播放器语音教 (1203)
· 网吧提权+不要钱上网 (5408)
· 批量入侵笑天网站管理系 (583)
· 揭露入侵黑鹰基地数据库 (675)
· 揭穿回忆刷QB工具教程 (7878)
· 盗连Network电视地址亲手打 (1152)
· 008基地破解木马专卖店免 (1105)
· 如何免费使用红娘的VIP (879)
· 批量入侵PHP网站 (2015)
· 虚拟机安装 (1683)
· 鸽子上兴通用超强免杀 (1003)
· 最新免费拿半年QQ秀 (1274)
· 合法赚QB (1048)

