파이썬에서 win32api함수들을 쓸 수 있음. 쓸수 있는건 알았는데
공식 홈페이지에서도 예제코드가 없어서 어떻게하는지 한참 해매다가....
삽질로 대충 사용법을 깨달았다.
1. 내가 가장 많이 쓸 함수인 keybd_event함수는 다른 c#이던 c++이던 거기서 쓰는 keybd_event함수와 사용법이 동일하다. 인자 순서도 같고, 인자값도 같다.
2. 가상 키 코드표 http://lab.cliel.com/entry/%EA%B0%80%EC%83%81-Key-Code%ED%91%9C 만 참조하면 키보드 입력은 거의 다 된다. ctrl+c같은 조합키도 된다
3. 또다른 많이 쓸 함수인 mouse_event도 나머지 언어의 api하고 다 같다. mouse_event함수의 두,세번째 인자는 현재의 마우스 커서 위치에서 x,y축으로 이동시킬 양이다.(상대적으로 이동 절대적 좌표이동이 아님.)
4. 아래 코드에는 단순히 마우스, 키보드 입력에 대한 예만 적어놨지만 웹 브라우저 창 열어서 가장 앞으로 끌어오기 등등 기능도 지원한다. http://blog.naver.com/lsh486love/30179973514
아래는 삽질하다가 가져온 코드....
# -*- encoding: cp949 -*- import win32api, win32con, time, threading def click(x,y): global a win32api.SetCursorPos((x,y)) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0) #win32api.mouse_event(win32con.MOUSE_MOVED, 100, 0, 0, 0) #첫번째인자 : x축 이동할 양., 두번째인자 : y축 이동할 양. 세번째,네번째는 0으로 놔둘것. #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0) win32api.keybd_event(0x30,0,0,0) #숫자 0 누르기. win32api.keybd_event(0x0d,0,0,0) #엔터키 누르기. keybd_event는 다른곳에서 쓰는 api랑 똑같으므로 찾아보면 나옴. #ex) http://lab.cliel.com/entry/%EA%B0%80%EC%83%81-Key-Code%ED%91%9C def input(): a = raw_input('입력') def key(): click(300,300) threading.Thread(target=input,args=()).start() threading.Thread(target=key,args=()).start()
이걸 공부하면서 이런 비효율적이고 쓸때없는 생각을 한번 해보았다. http://qkqhxla1.tistory.com/137
문제가 버튼 빨리 누르기인데 저때는 당연히 효율적인 요청 보내기로 풀었었다. 그럼 이번에 공부했던
저수준 함수들을 사용하여 '진짜 마우스로 빨리 버튼을 눌러본다면?' 심심해서 이것도 한번 구현해보았다.
말 그대로 '진짜 빠르게 클릭' 을 구현해서 성공했다.. 심심해서 한번 해봤는데 괜히했다.
%내 노트북의 모니터 좌표 기준이므로 해보려면 알아서 좌표를 바꿔야 한다.
쉬는 시간도 내 노트북 인터넷 속도 기준이므로 알아서 바꾸길.
# -*- encoding: cp949 -*- import win32api, win32con, time time.sleep(0.5) #잠시 쉬었다가... win32api.SetCursorPos((600,450)) #문제를 클릭하는쪽으로 마우스를 옮겨준다! win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 600, 450, 0, 0) # 문제를 클릭하고 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 600, 450, 0, 0) time.sleep(0.3) #문제가 열리고나서 잠시 쉬었다가... for i in range(2500): #휠을 아래로 내린다 win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL, 200, 200, -1, 1) time.sleep(0.01) #휠 내림을 조절할 잠깐의 시간 win32api.SetCursorPos((800,480)) #그다음 yes버튼으로 바우스를 옮겨준다 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 800, 480, 0, 0) #yes버튼을 알아서 클릭한다. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 800, 480, 0, 0)
'Python > 2.7 information' 카테고리의 다른 글
rarfile module ( DareYourMind programming 3 ) (0) | 2015.01.23 |
---|---|
beautifulsoup (0) | 2015.01.14 |
유니코드, christmasctf a letter to her 500, los xavis (0) | 2015.01.02 |
winpexpect ( ftz level5 ) (0) | 2014.12.27 |
pytesser모듈. (0) | 2014.12.19 |