반응형
지난번에 만든 wiimote 로 바라보는 방향 추적하는 것을 게임에 적용하기 위해
두개의 프로세스간 통신을 해야 하는 상황이 발생하였다.
2009/07/03 - [Programing 미분류] - Wiimote를 이용한 헤드트래킹 프로그램

예전에 이런거 만들때는 무식하게도 서로간에 UDP를 뚫어서 했었다.

그러다가 프로그램을 하면서 점점 리눅스에서는 popene 이라는게 있다는 것도 알았고. 뭐 여러가지 IPC 관련한 것을 알게되었다.
그런데 이번엔 영~ 저런거 하는게 너무 귀찮은거다.

스냅샷 프로그램을 보면 프로세스가 백그라운드로 돌면서도 키 이벤트를 전부 감지해서 단축키로 작동하게 되는 것을 볼 수 있는데
이 방법을 응용하면 복잡한 방법을 쓰지 않아도 될것 같아서 파이썬 마을에 질문을 다음과 같이 올렸다.

안녕하세요
질문 하나 올리겠습니다. ^_^


제가 WindowsXP에서

C#으로 짠 프로그램이 하나 있고
python으로 짠 프로그램이 하나 있습니다.

두개의 프로그램을 동시에 띄웁니다.

이럴경우에 윈도우의 포커스가 둘중 어느것에 가있던지 상관없이
키보드 이벤트가 일어나면
python 프로그램에서 받고 싶습니다.
(마치 윈도우 스크린샷 프로그램의 단축키가 작동하듯이요)

C# 프로그램의 어떤 버튼을 클릭하면 키보드A 키가 눌려지는 효과를 줄것이구요.
A키가 눌려졌다는것을 python프로그램에서 알아채고 싶습니다.

이럴때는 어떻게 해야 할까요?




두개의 프로세스간 통신을 위해서 그냥 내부 UDP통신을 뚫을까 생각도 해봤는데 영~ 비효율적인 방법인듯 해서 여쭤봅니다.


조언 부탁드리겠습니다.
읽어주셔서 감사합니다. ^_^
------------------------------------------------------------------------------------------------
ctypes.windll.user32.PostMessageA

를 이용하면 다른 프로그램의 윈도우창을 제어할 수 있습니다.

예를 들어
ctypes.windll.user32.PostMessageA(hwnd, 0x0100, 0x1b, 0)
는 esc 키를 누른 효과를 냅니다.
오호!
PostMessageA 라는게 있었던거다.

내가 원하던 바로 그것은 아니지만 이것으로도 할 수 있겠다는 생각이 들어 구글신께 여쭈어보았더니!
친절하게 예제를 올려준 싸이트가 걸려들었다.

그 예제를 내가 약간 수정하였다.


notepad 가 실행중이면 그것을 찾아
핸들을 얻은 다음

버튼을 누를때마다

메모장에 hello 를 찍어주는 예제이다.

이것으로 약간만 응용하면 ㅋㅋ

내가 원하는 것을 만들 수가 있다.
반응형
Posted by Real_G