초기 이미지며, 이 예제에서는 작업관리자 윈도우를 찾아서, 작업 관리자에 해당하는 프로세스를 종료시키다.
작업관리자 대신 다른 윈도우를 찾는 코드를 변경시키면 다른 프로세스를 종료시킬수 있다.

소스이다.
' 지정된 윈도우를 찾아, 찾은 윈도우에 해당하는 프로세스를 종료시킨다.
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess 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 Const PROCESS_TERMINATE = 1

Private Sub Command1_Click() ' 종료 버튼 클릭
    timFindProcess.Enabled = False
    Unload Me
End Sub

Private Sub timFindProcess_Timer()
    Dim WinHnd As Long ' 윈도우 핸들
   
    WinHnd = CheckWindow
    If Not CBool(WinHnd) Then Exit Sub
    ProcessKill WinHnd
End Sub

Private Function CheckWindow() As Long ' 윈두우를 찾는다.
    CheckWindow = FindWindow(vbNullString, "Windows 작업 관리자") '작업관리자의 윈도우 네임
End Function

Private Sub ProcessKill(ByVal Wnd As Long) ' 윈도우에 해당하는 프로세스를 종료시킨다.
    Dim PID As Long
   
    GetWindowThreadProcessId Wnd, PID
    KillProcessById PID
End Sub

Private Sub KillProcessById(ByVal p_lngProcessId As Long) ' 윈도우에 해당하는 프로세스를 강제 종료시킨다.
  Dim lnghProcess As Long
  Dim lngReturn As Long
 
  lnghProcess = OpenProcess(PROCESS_TERMINATE, False, p_lngProcessId)
  lngReturn = TerminateProcess(lnghProcess, 0&)
End Sub

+ Recent posts