초기 이미지며, 이 예제에서는 작업관리자 윈도우를 찾아서, 작업 관리자에 해당하는 프로세스를 종료시키다.
작업관리자 대신 다른 윈도우를 찾는 코드를 변경시키면 다른 프로세스를 종료시킬수 있다.
소스이다.
' 지정된 윈도우를 찾아, 찾은 윈도우에 해당하는 프로세스를 종료시킨다.
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
'API' 카테고리의 다른 글
WindowFromPoint를 사용한 마우스 아래의 윈도우의 핸들 찾기 (0) | 2011.09.13 |
---|---|
레지스트리 값 생성,읽기,쓰기,삭제 (0) | 2011.09.11 |
SHGetSpecialFolderLocation 사용한 인터넷 바로가기(*.url) 파일 생성 (0) | 2011.09.10 |
WM_PASTE 메세지, 클립보드를 사용한 복사 (0) | 2011.09.09 |
InternetReadFile을 이용한 HTTP,FTP의 URL 응답 메시지 읽어오기 (0) | 2011.09.08 |