티스토리 뷰
반응형
Windows 프로세스간 통신
MFC를 이용하여 Windows 프로세스(exe)간 통신하는 방법을 소개합니다.
a. 통신할 대상 프로그램을 찾습니다. (Sender) - FindWindow
b. 전달할 메시지를 정의합니다. (Sender) - COPYDATASTRUCT
c. 정의한 메시지를 Recver 프로세스에게 전달합니다. (Sender) - SendMessage
d. 수신된 메시지를 처리합니다. (Recver)
1. 송신부(Sender) 구현 소스입니다.
a ~ c 과정이 포함되어 있습니다.
// a. 통신할 대상 프로그램을 찾습니다. (Sender)
HWND handle = ::FindWindow(NULL, _T("Kill Process"));
if (handle != NULL) {
// b. 전달할 메시지를 정의합니다. (Sender)
COPYDATASTRUCT nCopyData;
CString strMsg = _T("");
strMsg.Format(_T("ALIVE process\n"));
nCopyData.dwData = 312;
nCopyData.cbData = strMsg.GetLength();
nCopyData.lpData = (TCHAR*)(LPCTSTR)strMsg;
// c. 정의한 메시지를 Recver 프로세스에게 전달합니다. (Sender)
::SendMessage(handle, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&nCopyData);
}
else {
//
}
2. 수신부(Recver) 구현 소스입니다.
d 과정이 포함되어 있습니다.
/////////////////////////////////////////////////////////////////////////////
## .h file
// 사용자 정의 메시지 처리 함수 선언
afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
/////////////////////////////////////////////////////////////////////////////
## cpp file
// 사용자 정의 메시지 맵 등록
BEGIN_MESSAGE_MAP(ReceiveDlg, CDialogEx)
ON_WM_COPYDATA()
END_MESSAGE_MAP()
// 사용자 정의 메시지 처리 구현
// d. 수신된 메시지를 처리합니다. (Recver)
BOOL ReceiveDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
COPYDATASTRUCT* cs = pCopyDataStruct;
if (cs->dwData == 312)
{
TCHAR* lpBuffer = (TCHAR*)cs->lpData;
CString str(lpBuffer);
}
return CDialogEx::OnCopyData(pWnd, pCopyDataStruct);
}
개인적으로 학습하면서 정리한 내용입니다.
잘못된 내용이 있을 경우 알려주시면 확인 후 수정 및 반영하도록 하겠습니다.
오늘도 감사합니다.(__)>
'개발 > VC++ (MFC)' 카테고리의 다른 글
MFC : CTime 클래스 Format 함수 너는 누구냐? (0) | 2023.06.28 |
---|---|
MFC : 타이틀바에 시간 정보 출력하기 (0) | 2023.06.23 |
MFC : 가변인자 처리 wvsprintf() -> vswprintf() (0) | 2023.06.01 |
MFC : Failed to return... (0) | 2023.05.25 |
MFC : 윈도우(창) 좌표 이야기 (0) | 2023.05.22 |