파이썬으로 유저가 현재 보고있는 윈도우창 알아내기
조회수 4048회
파이썬으로 학습용 목적으로 키로깅 프로그램을 한번 만들어보고있는중입니다.
키보드 후킹해서 입력값을 가져오는것은 진작에 완성했는데, 유저가 현재 보고있는 윈도우창의 이름을 가져오는 기능을 만들어보고자하는데 마땅한 함수나 모듈 혹은 이 코드를 작성하기 위해 구글링에 필요한 정보조차 감이 오지 않습니다.
어떻게 해야할까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
윈도우에 접속한 김에 간단한 샘플을 올려드립니다.
import time, ctypes time.sleep(3) # 타이틀을 가져오고자 하는 윈도우를 활성화 하기위해 의도적으로 3초 멈춥니다. lib = ctypes.windll.LoadLibrary('user32.dll') handle = lib.GetForegroundWindow() # 활성화된 윈도우의 핸들얻음 buffer = ctypes.create_unicode_buffer(255) # 타이틀을 저장할 버퍼 lib.GetWindowTextW(handle, buffer, ctypes.sizeof(buffer)) # 버퍼에 타이틀 저장 print(buffer.value) # 버퍼출력
-
windows api 인 GetForegroundWindow 펑션으로 핸들을 얻을 수 있고 GetWindowText 펑션으로 타이틀을 얻을 수 있습니다.
아래의 문서를 참조하시면 됩니다.
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getforegroundwindow
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getwindowtextw
당연히 윈도우 api 를 호출해야 하므로 파이썬에서는 ctypes 를 이용하여 user32.dll 을 핸들링하여 호출하거나 pywin32 을 사용하여 호출할 수 있습니다.
댓글 입력