윈도우즈 프로세스 킬이 가능한가요?

skypigzz의 이미지

visual c++에서 winexc를 통해 vlc 플레이어(영상 재생)를 재생하고 나서,

이것을 죽일 수 있는 명령어가 있나요?

예를 들어 재생되고 있는 윈도우 창을 버튼을 누름으로써 재생 되던 것을 죽일 수 있나요?

있다면 어떤 식으로 죽일 수 있는지 예를 들어 주실 수 있나요?

cyana의 이미지

msdn, google, codeguru, codeproject 등의 사이트를 돌아다녀 보시면 꽤 많은 정보를 얻을 수 있습니다.

시스템에서 실행중인 프로세스를 오픈하여 각 프로세스의 이름을 체크해서 일치하는 이름이 있는 process handle을 close하면 죽습니다. 관련 API:

CreateToolhelp32Snapshot()
Process32First()
Process32Next()
OpenProcess()
CloseHandle()

다른 방법은(window의 title을 알 경우), FindWindow()로 window handle을 얻어와 SendMessage() 함수로 WM_QUIT 같은 메시지를 보내 죽일 수도 있고, 만일 특정 이벤트를 실행해야 한다면 WM_QUIT 말고도 다른 메시지를 보내 버튼이 눌린 것처럼 할 수도 있죠.

phonon의 이미지

API로 하실려면 cyana님의 답변을 참고하시고, 명령어가 하시려면
tasklist, taskkill을 사용하세요.

--------------------------

c:\>tasklist

--------------------------

ex)process ID 강제종료
c:\>taskkill /F /PID 1234

ex)program name 강제종료
c:\>taskkill /F /IM notepad.exe
--------------------------

ps)한글자판이 아니라...

glay의 이미지

자매품 findstr 을 사용하시면 더욱 좋습니다.

ex) tasklist | findstr cmd

grep 처럼 사용하실수 있어요;;

--------------- 절취선 ------------------------
하늘은 스스로 삽질하는 자를 삽으로 팬다.

http://glay.pe.kr


--------------- 절취선 ------------------------
하늘은 스스로 삽질하는 자를 삽으로 팬다.

http://glay.pe.kr

blueiur의 이미지


윈도우 홈에디션에는 없습니다.
고로 사용하면 큰일날수 있겠죠?

phonon의 이미지

다른 명령어도 있습니다.

ex)tskill 프로그램명/아이디
c:\>tskill notepad