Lấy danh sách tên các Process trong Taskmanager

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,952
Trong 1 số trường hợp, các bạn cần chụp hình Taskmanager để post lên diển đàn, nhưng list quá dài, buột phải chụp hình nhiều lần thì công cụ tôi đưa lên đây rất hửu ích
Code dưới đây do tôi sưu tầm được và chỉnh lại đôi chút, xin chia sẽ với mọi người
PHP:
Private Sub Cmd1_Click()
   Dim strComputer, objWMIService, wbemFlagReturnImmediately, wbemFlagForwardOnly, ProItems, ProItem
   Application.ScreenUpdating = False
   strComputer = "."
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set ProItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
   With Range("A1:A100")
     .Offset(1).Clear
      For Each ProItem In ProItems
         .Cells(2 + i) = ProItem.Name: i = i + 1
      Next
     .Sort .Cells(2), 1, Header:=1
   End With
   Application.ScreenUpdating = True
End Sub
 

File đính kèm

Chào bạn NDU , bây giờ mình muốn dừng 1 chương trình đang chạy trong đó thì code thế nào .
Cảm ơn
 
Upvote 0
Chào bạn NDU , bây giờ mình muốn dừng 1 chương trình đang chạy trong đó thì code thế nào .
Cảm ơn
Anh dùng code sau:

Mã:
Public Sub FindAndTerminate(ByVal strProcName As String)
    Dim objWMIService, objProcess, colProcess
    Dim strComputer
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")
        Set colProcess = objWMIService.ExecQuery _
            ("Select * from Win32_Process Where Name = '" & strProcName & "'")
    If colProcess.Count > 0 Then
         For Each objProcess In colProcess
            objProcess.Terminate
         Next objProcess
   End If
End Sub
 
Upvote 0
Mã:
Public Sub FindAndTerminate(ByVal strProcName As String)
    Dim objWMIService, objProcess, colProcess
    Dim strComputer
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")
        Set colProcess = objWMIService.ExecQuery _
            ("Select * from Win32_Process Where Name = '" & strProcName & "'")
    If colProcess.Count > 0 Then
         For Each objProcess In colProcess
            objProcess.Terminate
         Next objProcess
   End If
End Sub
Cảm ơn bạn , nhưng cụ thể mình muốn ngưng chương trình A thì thế nào
 
Upvote 0
Anh dùng code bài 1 liệt kê các Process để lấy tên chính xác của chương trình A. Thí dụ Unikey.exe

Sau đó, viết 1 thủ tục như sau và chạy:

PHP:
Sub xyz()
FindAndTerminate "unikey.exe"
End Sub

Vì FindAndTerminate là 1 thủ tục có tham số truyền, anh truyền tham số vào là nó chạy
 
Lần chỉnh sửa cuối:
Upvote 0
Chào bạn NDU , bây giờ mình muốn dừng 1 chương trình đang chạy trong đó thì code thế nào .
Cảm ơn
Không gì đơn giản và ngắn gọn hơn là dùng CMD
PHP:
Sub KillProcess(ByVal ProItem As String)
  Dim sComm As String
  sComm = "taskkill /F /IM " & ProItem
  CreateObject("Wscript.Shell").Run "cmd /c " & sComm, 0, True
End Sub
Giờ, để Kill 1 Process nào đó, chẳng hạn là Unikey.exe, ta viết thêm 1 sub nữa:
PHP:
Sub Test()
  KillProcess "UniKey.exe"
End Sub
Chạy sub Test, có ngay kết quả
 
Upvote 0
Cảm ơn các bạn , còn chữ Public trước sub không biết có tác dụng gì vậy
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom