給妳個思路:
用以下代碼獲得系統中進程快照,如果有妳要的進程,那麽打開壹個文件,每秒記錄壹次時間,累計達到妳需要的時間就用Shell "cmd /c" & "Taskkill /f /t /im " & 進程名 0 殺死進程
以下代碼是我常用的,改改就可以達到妳想要的效果
需要壹個文本框;設置文本框為多行顯示,具有水平和垂直滾動條。 按鈕壹個
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const MAX_PATH As Integer = 260
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 * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Sub Command1_Click()
Timer1.Interval = 5000
End Sub
Private Sub Form_Load()
Text1.Text = "輸入要結束的進程名稱"
Command1.Caption = "5秒殺進程"
End Sub
Private Sub Timer1_Timer()
Dim hSnapShot As Long, uProcess As PROCESSENTRY32
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
'得到系統中所有正在運行的進程的快照信息
uProcess.dwSize = Len(uProcess)
r = Process32First(hSnapShot, uProcess)
Me.AutoRedraw = True
'窗體重畫
Do While r
If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = Text1.Text Then Shell "cmd /c" & "Taskkill /f /t /im " & Text1.Text, 0
'殺指定進程
r = Process32Next(hSnapShot, uProcess)
Loop
CloseHandle hSnapShot
Timer1.Interval = 0
End Sub