私は2つのウィンドウアプリケーションを持っています。まず、Windowsフォームアプリケーション。 2番目はコンソールアプリケーションです。コンソールアプリケーションからフォームアプリケーションにメッセージを送信する必要があります。私はブロードキャストメッセージを登録し、使用:: PostMessage関数は、フォームアプリケーションに数値メッセージを送信することができました。しかし、私は文字列メッセージを送ることができません。以下の私のコードを見つけてください: -PostMessageとWM_COPYDATAを使用して文字列メッセージを送信する方法
// Sending Message (Console Application)
#define RT_UI_MSG (WM_USER+1)
UINT msg_id = RegisterWindowMessage("Test-UI");
LPTSTR lpszString = "Hello";
COPYDATASTRUCT cds;
cds.dwData = 1; // can be anything
cds.cbData = sizeof(TCHAR) * (_tcslen(lpszString) + 1);
cds.lpData = &lpszString;
::PostMessage(HWND_BROADCAST, msg_id, WM_COPYDATA, (LPARAM)(LPVOID)&cds);
//メッセージ(Formsアプリケーション) BEGIN_MESSAGE_MAP(CRTUIDlg、CDialogEx) ON_WM_PAINTを受信() ON_WM_QUERYDRAGICONを() ON_BN_CLICKED(IDOK、& CRTUIDlg :: OnBnClickedOk) ON_REGISTERED_MESSAGE (TEMP、OnRTUIMsg) ON_BN_CLICKED(IDC_BUTTON1、& CRTUIDlg :: OnBnClickedButton1) END_MESSAGE_MAP()
UINT temp = RegisterWindowMessage(L"Test-UI");
LRESULT CRTUIDlg::OnRTUIMsg(WPARAM wParam, LPARAM lParam)
{
COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
if (pcds->dwData == 1)
{
LPCTSTR lpszString = (LPCTSTR)(pcds->lpData);
// do something with lpszString...
}
return 0;
}
は親切に私は私が間違っているのかを理解し、この作業
フォームアプリケーションでこのコードを使用してメッセージを受信しましたが、受信したデータが空で、ポインタpcds全体が空です。 – Sam