윈도우에서 pyHook 모듈을 이용해서 마우스와 키보드 디바이스 이벤트 체크하기...

필요하신 분들은 참고하세요.


동네랑 성격은 틀리지만 필요하신 분들 계실 것 같아서 남겨둡니다.


파이썬훅이라는 모듈을 이용해서 마우스와 키보드 이벤들을 체크하는 겁니다.


일종의 시스템 디바이스 후킹입니다.


다른 오에스는 소스중에 링크 걸려있는 소스포지로 가셔서 원소스를 받아다가 조금만 손 보시면 됩니다.


지원하는 파이썬 버전은 2.7x입니다.


3.x는 소스 컨버트 해도 안될겁니다.






import os

import time

import pyHook # http://sourceforge.net/projects/pyhook/

from win32gui import GetWindowRect, GetClassName, GetWindowText


curTime = time.strftime("%Y%m%d_%H%M%S", time.localtime(time.time()))


if not os.path.exists("Messages"):

os.mkdir("Messages")


f = open("Messages\\messages"+ curTime +".txt", "w")


def Log(logStr):

print str(logStr)

f.write(logStr + "\n")



def OnMouseEvent(event):

Log('MessageName:' + str(event.MessageName))

Log('Message:' + str(event.Message))

Log('Time:' + str(event.Time))

Log('Window:' + str(event.Window))

if event.Window != 0:

Log('Window Rect:' + str( GetWindowRect(event.Window)))

Log('Window Class Name:' + str( GetClassName(event.Window)))

#Log('Window Text:' + str( GetWindowText(event.Window)))

Log('WindowName:' + str(event.WindowName))

Log('Position:' + str(event.Position))

Log('Wheel:' + str(event.Wheel))

Log('Injected:' + str(event.Injected))

Log('---')


# return True to pass the event to other handlers

# return False to stop the event from propagating

return True


def OnKeyboardEvent(event):

Log('MessageName:' + str(event.MessageName))

Log('Message:' + str(event.Message))

Log('Time:' + str(event.Time))

Log('Window:' + str(event.Window))

if event.Window != 0:

Log('Window Rect:' + str( GetWindowRect(event.Window)))

Log('Window Class Name:' + str( GetClassName(event.Window)))

#Log('Window Text:' + str( GetWindowText(event.Window)))

Log('WindowName:' + str(event.WindowName))

Log('Ascii:' + str( event.Ascii) + str( chr(event.Ascii)))

Log('Key:' + str( event.Key))

Log('KeyID:' + str( event.KeyID))

Log('ScanCode:' + str( event.ScanCode))

Log('Extended:' + str( event.Extended))

Log('Injected:' + str( event.Injected))

Log('Alt' + str( event.Alt))

Log('Transition' + str( event.Transition))

Log('---')


# return True to pass the event to other handlers

# return False to stop the event from propagating

return True


# create the hook mananger

hm = pyHook.HookManager()

# register two callbacks

hm.MouseAllButtonsDown = OnMouseEvent

hm.KeyDown = OnKeyboardEvent


# hook into the mouse and keyboard events

hm.HookMouse()

hm.HookKeyboard()


if __name__ == '__main__':

import pythoncom

pythoncom.PumpMessages()

댓글 6
sankill 2014-05-08 18:15

좋은정보 감사합니다.~

-GOM- 2014-05-09 01:38

별 말씀을요.

도움이 되셨다니 저로서도 감사할 따름입니다.

즐키보딩 하세요~! :)

자기빛깔 2014-09-01 15:34

잘 보았읍니다

큐짱 2014-09-13 08:41

유용한 정보 감사합니다.

농업인 2014-10-08 16:41

유용한 정보 감사합니다.

재요 2014-11-03 16:54
좋은 정보 감사합니다.