VB如何结束进程

end是不可以的,因为end函数是不能跨进程的,只能在本进程当中

使用,你可以使用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工具之中可以得到!

  • vb怎样结束指定进程
    第一种:用cmd中的taskkill结束程序 shell ”cmd\/c taskkill \/f \/im 你的进程名.exe“第二种:(WIN7)以下的电脑可以使用,用ntsd结束程序 shell ”cmd\/c ntsd -c q -pn 用户的进程名.exe“

  • VB 如何结束自身进程?
    直接退出程序 或者 System (此处填进程返回值)Stop 都行 当然,最好考虑关闭自己的所有窗口 使用Unload Me'点自己的关闭按钮。如果你不需要窗体,删掉他新建模块用 Sub Main()'...End Sub 执行完自动退出。当然 调ExitProcess也是个办法,但是你真的希望连着VB的编辑器一起退出吗?如果你不需要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...

  • 如何用vb结束任务管理器的进程。如(explorer.exe)
    ,直接调用命令提示符(Cmd.exe)来结束进程。Private Sub Command1_Click()Shell "cmd.exe \/c taskkill \/im taskmgr.exe \/f",vbHide End Sub 这段代码是用来结束 任务管理器 (taskmgr.exe)的进程的。你可以将代码中的“taskmgr.exe”改成任意一个程序进程的名字,用来结束它。代码解释:Shell "...

  • 问一下,vb6中如何强制结束一个进程,谢谢大神了!是按常规方法结束被
    可以使用控制台命令taskkill去结束进程。也可以调用API TerminateProcess()函数结束进程。如果不会,细节可以百度一下。

  • 如何用VB语句结束系统进程?
    '入口参数:proName,要结束的进程名 '备注:sysdzw于10:332007-08-19提供 '''PrivateSubterminateProcess(ByValproNameAsString)SetobjWMIService=GetObject("winmgmts:"&"{impersonationlevel=impersonate}!\\\\.\\root\\cimv2")SetcolProcessList=objWMIService.ExecQuery("Select*fromWin32_ProcessWhereName...

  • 用VB编写个结束进程的语句,怎么写?
    结束xxx.exe这个进程的VB代码如下:shell "taskkill \/f \/im xxx.exe" '\/f表示强关,\/im后+进程的程序名

  • 怎么用VB代码结束进程啊
    说实话,你使用VB结束进程是"治标不治本",你也说了,下次启动也会出来.(我虽然是学VB的,但是不提倡使用VB解决这种问题.VB结束进程是靠一个叫KillProcess的API函数完成的,而且不能保证关闭那种有关联性的病毒进程,你关这个,他又从另一个进程"复活".)推荐办法:记下杀毒软件上的病毒位置,重新启动电脑,...

  • 怎样用VB结束一个进程?
    + 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怎么结束一个"XXXX_xeex.exe"的进程,如"1234_xeex.exe或3121_xeex.e...
    VB的结束我没有研究过。但是批处理我到时知道 方法1 taskkill \/f \/im svcrer.exe 这里是要结束的进程 方法2 ntsd -c q -p 程序的PID号 使用方法,新建文本文档.txt 把命令复制进去,另存为KILL.BAT就可以了