개요 | |
보통 메시지(SendMessage, PostMessage) 는 1개의 프로그램내에서 주로 사용되나, 서로다른 프로그램간에도 메시지 송수신 가능하다. 본 글에서는 다른 프로그램간의 메시시 송수신 방법 정리한다.
구현방법 요점. 2개의 프로그램이 있다고 하고, 각각을 A, B 라고 하자. 메시지 전송함수 SendMessage/PostMessage 모두 사용가능하며 본 글에서는 SendMessage 를 예로 보이나, 설명중의 SendMessage는 PostMessage 로 대치가능하다.
1. A,B 모두에 RegisterWindowMessage 함수 호출한다. - 메시지를 등록하는 함수이며 이렇게 등록된 메시지는 다른 프로그램으로도 전달가능하다. - 함수의 인자로 임의 문자열을 기록하는데, 이 문자열이 동일한 프로그램끼리 메시시 전달이 가능하다. - 이 함수 반환값을 받아둬서 SendMessage 함수 호출시 인자로 전달해야함.
2. 메시지 전송할 측에서 SendMessage 호출 - 인자로 상기1에서의 함수 반환값을 인자로 전달.
3. 메시시 수신하는 측에서는 ON_REGISTERED_MESSAGE 매크로 이용. - 본 매크로 이용하여 메시지 핸들러 함수를 연결시키게된다. - 메시지 핸들러 함수 구현.
본 방식의 메시지 송수신 단점. 메시지 전송함수는 특정 프로그램의 윈도우로만 전송하지 않고, 모든 윈도우에 전송하기 때문에 SendMessage 함수 호출후 3~5초 정도의 시간이 지나야 리턴되어 고속 즉시 전송의 용도로는 제한적임.
다른 프로그램과의 메시지를 고속,즉시 전송 달성하기 위해서는 상대방 윈도우 핸들을 함수 FindWindow 로 확보하여 SendMessage 함수 호출시 메시지 수신대상 윈도우를 지정하는 방식으로 하면 된다. 방법 상세보기 -> http://igotit.tistory.com/319
| |
|
본 글이 포함된 상위 정리 장소.
Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11
|
///318.
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
다른 프로그램과 메모리 공유 - 메모리 맵 파일. (0) | 2015.06.06 |
---|---|
다른 프로그램과 메시지 송수신 - FindWindow이용 대상윈도우핸들로 직접 전송. (0) | 2015.06.06 |
Virtual-Key Codes. VC++ (0) | 2015.01.19 |
키보드 입력처리. VC++ MFC 이용하는 경우. (0) | 2015.01.19 |
동적 메모리 할당. 변수,배열, new delete (0) | 2015.01.17 |
댓글