VB结束进程详解
VB结束进程详解,根据 进程名字来结束进程,说详细点
VB结束进程详解,根据 进程名字来结束进程,说详细点
答案:假设任务管理器里面有一个进程名为“notepad.exe”,怎样用VB编个程序来结束它?添加三个CommandButton和一个ListBox Option Explicit Dim ProcessID() As Long ' 按list1中的进程顺序存储所有进程ID '---------- 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 * 1024 End Type Private Type MODULEENTRY32 '模块 dwsize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Byte modBaseSize As Long hModule As Long szModule As String * 256 szExePath As String * 1024 End Type Private Type THREADENTRY32 '线程 dwsize As Long cntusage As Long th32threadID As Long th32OwnerProcessID As Long tpBasePri As Long tpDeltaPri As Long dwFlags As Long End Type '----------------------------------------- API声明 ------------------------------------------------------- Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) 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 Thread32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As THREADENTRY32) As Long Private Declare Function Thread32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As THREADENTRY32) As Long 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 GetCurrentProcessId Lib "kernel32" () As Long '---------------------------------------- API常数声明 ------------------------------------------------------ Private Const TH32CS_SNAPHEAPLIST = &H1 Private Const TH32CS_SNAPPROCESS = &H2 Private Const TH32CS_SNAPTHREAD = &H4 Private Const TH32CS_SNAPMODULE = &H8 Private Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Private Const TH32CS_INHERIT = &H80000000 Private Const PROCESS_TERMINATE = &H1& Private Sub Command1_Click() Dim Process As PROCESSENTRY32 Dim ProcSnap As Long Dim cntProcess As Long cntProcess = 0 List1.Clear ProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) If ProcSnap Then Process.dwsize = 1060 ' 通常用法 Process32First ProcSnap, Process Do Until Process32Next(ProcSnap, Process) < 1 ' 遍历所有进程直到返回值为False List1.AddItem Trim(Process.szExeFile) cntProcess = cntProcess + 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 CloseHandle (ProcSnap) End Sub Private Sub Command2_Click() Dim c As Integer If List1.ListIndex < 0 Then MsgBox "请选择进程!", vbOKOnly + vbInformation, "提示" Else Dim hProcess As Long hProcess = OpenProcess(PROCESS_TERMINATE, False, ProcessID(List1.ListIndex)) If hProcess Then TerminateProcess hProcess, 0 c = List1.ListCount While List1.ListCount = c Command1_Click Wend End If End Sub Private Sub Command3_Click() Unload Me End Sub
shell "tskill 进程名" 这句指令很好用哦,像退出是会提示是否真的退出这样的程序都直接杀掉,不会弹出提示的 比如结束QQ的进程 shell "tskill QQ2010"就可以杀掉QQ了
上一个:VB读写ini的问题
下一个:求VB字符型函数