구글애드센스


MFC, CString 을 LPARAM으로 다른 프로세스에 넘겨주는 법. STUDY



PostMessage로 WM_USER + 임의의 값으로 다른 프로세스에 넘겨줄려고 계속 삽질했는데, 실패. (자기 프로세스에서는 되는듯)
왜 안되는지는 잘 모르겠고... 구글링 해보니까 WM_COPYDATA 를 써서 넘겨줘야한다. COPYDATASTRUCT 였나? 하는 이상한 구조체 (WM_COPYDATA 이벤트 핸들러 인자중 하나)를 선언하고 거기다 원하는 값 설정후 넘겨주니 잘 된다.

문제는 이게 SendMessage 로만 동작이 가능하고 PostMessage에서는 동작을 하지 않는다. 또! 문제는 SendMessage는 블락이기 때문에 WM_COPYDATA 이벤트 핸들러에서 잡고 있으면 SendMessage 하는 프로세스놈은 얼어버릴 가능성이 있다. 그리고 운 나쁘면 프로그램이 죽어버릴 가능성도 있기 때문에 SendMessage를 최대한 안쓰면 좋은데, 이것도 구글링 좀 했더니만 WM_COPYDATA 핸들러 쪽에서는 받은 데이터를 가지고 자기 자신에게 PostMessage로 보내줘버리고 return 해버리는 것을 강추하더라.

코드를 적고는 싶지만 귀찮아서. 여튼 그걸로 해결.


덧글

댓글 입력 영역