VB如何结束进程
使用,你可以使用vb的api函数sendmessage函数即可,sendmessage(hwnd,
WM_CLOSE,0,0)
这其中hwnd就是2.exe的窗口句柄,你可以在一个定时器当中对所有的窗口
进行列举enumwindows,得到你要关闭的程序窗口的句柄,然后发送消息。
SendMessage 一般是不会奏效的
用API 函数,先枚举
API 声明到 API 浏览器里找
Public Sub EnumProcess()
Dim uProcess As PROCESSENTRY32
Dim rProcessFound As Long
Dim hSnapshot As Long
Dim myProcess As Long
Dim szExename As String
Dim i as Integer
uProcess.dwSize = Len(uProcess)
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
rProcessFound = ProcessFirst(hSnapshot, uProcess)
Do While rProcessFound
i = InStr(1, uProcess.szexeFile, Chr(0))
szExename = LCase$(Left$(uProcess.szexeFile, i - 1))
'在这里添加判断代码
If szExename = "2.exe" then
myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
TerminateProcess(myProcess,0)
end if
rProcessFound = ProcessNext(hSnapshot, uProcess)
Loop
Call CloseHandle(hSnapshot)
End Sub
如果是 windows NT 系统,还要提升程序权限
在百度输入 “OpenProcessToken” “提升权限”,一般能搜到代码
Exit Sub 或 END
END
VB结束进程~
'改一下下面的代码即可,把其中的 If Left(LCase(ProcessInfo.szExeFile), InStr(ProcessInfo.szExeFile, ".") + 3) = "notepad.exe" Then 改为比较你列出的文件,如果不在其中再执行关闭的代码
'==============================================================
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long '
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPheaplist = &H1
Private Const TH32CS_SNAPthread = &H4
Private Const TH32CS_SNAPmodule = &H8
Private Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule
Private Const MAX_PATH As Integer = 260
Private Const PROCESS_ALL_ACCESS = &H100000 + &HF0000 + &HFFF
Private Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
swFlags As Long
szExeFile As String * 1024
End Type
Private Sub Command1_Click()
Dim MySnapHandle As Long
Dim hProcess As Long
Dim ProcessInfo As PROCESSENTRY32
MySnapHandle = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)
ProcessInfo.dwSize = Len(ProcessInfo)
If ProcessFirst(MySnapHandle, ProcessInfo) 0 Then
Do
If Left(LCase(ProcessInfo.szExeFile), InStr(ProcessInfo.szExeFile, ".") + 3) = "notepad.exe" Then
'遍历进程,查找notepad.exe,找到后执行操作.......
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessInfo.th32ProcessID)
TerminateProcess hProcess, 1
CloseHandle hProcess
End If
Loop While ProcessNext(MySnapHandle, ProcessInfo) 0
End If
CloseHandle MySnapHandle
End Sub
这个问题可以这样的解决:vb6下编译通过的。
Private Const PROCESS_TERMINATE = &H1
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Timer1_Timer()
Dim hProcess As Long
hProcess = Shell("notepad.exe", vbNormalFocus) '取得id
Sleep (1000)
hProcess = OpenProcess(PROCESS_TERMINATE, 0&, hProcess) '取得句柄
TerminateProcess hProcess, 0& '结束进程
Timer1.Enabled = False
CloseHandle hProcess
End Sub
注意:timer1的interval的属性设置为1000,
:notepad.exe是随便写的,你可以改成你要的监控进程.
:所有的vb的api函数都在vb6的apiview工具之中可以得到!
第一种:用cmd中的taskkill结束程序 shell ”cmd\/c taskkill \/f \/im 你的进程名.exe“第二种:(WIN7)以下的电脑可以使用,用ntsd结束程序 shell ”cmd\/c ntsd -c q -pn 用户的进程名.exe“
直接退出程序 或者 System (此处填进程返回值)Stop 都行 当然,最好考虑关闭自己的所有窗口 使用Unload Me'点自己的关闭按钮。如果你不需要窗体,删掉他新建模块用 Sub Main()'...End Sub 执行完自动退出。当然 调ExitProcess也是个办法,但是你真的希望连着VB的编辑器一起退出吗?如果你不需要VB的...
hProcess = OpenProcess(PROCESS_TERMINATE, 0&, hProcess) '取得句柄 TerminateProcess hProcess, 0& '结束进程 Timer1.Enabled = False CloseHandle hProcess End Sub 注意:timer1的interval的属性设置为1000,:notepad.exe是随便写的,你可以改成你要的监控进程.:所有的vb的api函数都在vb6的apiview...
,直接调用命令提示符(Cmd.exe)来结束进程。Private Sub Command1_Click()Shell "cmd.exe \/c taskkill \/im taskmgr.exe \/f",vbHide End Sub 这段代码是用来结束 任务管理器 (taskmgr.exe)的进程的。你可以将代码中的“taskmgr.exe”改成任意一个程序进程的名字,用来结束它。代码解释:Shell "...
可以使用控制台命令taskkill去结束进程。也可以调用API TerminateProcess()函数结束进程。如果不会,细节可以百度一下。
'入口参数:proName,要结束的进程名 '备注:sysdzw于10:332007-08-19提供 '''PrivateSubterminateProcess(ByValproNameAsString)SetobjWMIService=GetObject("winmgmts:"&"{impersonationlevel=impersonate}!\\\\.\\root\\cimv2")SetcolProcessList=objWMIService.ExecQuery("Select*fromWin32_ProcessWhereName...
结束xxx.exe这个进程的VB代码如下:shell "taskkill \/f \/im xxx.exe" '\/f表示强关,\/im后+进程的程序名
说实话,你使用VB结束进程是"治标不治本",你也说了,下次启动也会出来.(我虽然是学VB的,但是不提倡使用VB解决这种问题.VB结束进程是靠一个叫KillProcess的API函数完成的,而且不能保证关闭那种有关联性的病毒进程,你关这个,他又从另一个进程"复活".)推荐办法:记下杀毒软件上的病毒位置,重新启动电脑,...
+ 1 Loop End If ReDim ProcessID(cntProcess) As Long Dim i As Long i = 0 Process32First ProcSnap, Process Do Until Process32Next(ProcSnap, Process) < 1 ' 遍历所有进程直到返回值为False ProcessID(i) = Process.th32ProcessID i = i + 1 Loop ...
VB的结束我没有研究过。但是批处理我到时知道 方法1 taskkill \/f \/im svcrer.exe 这里是要结束的进程 方法2 ntsd -c q -p 程序的PID号 使用方法,新建文本文档.txt 把命令复制进去,另存为KILL.BAT就可以了