我希望在进程之间发送文本。我发现了很多这样的例子,但没有一个我可以工作。这是我到目前为止所拥有的:
对于发送部分:
COPYDATASTRUCT CDS;
CDS.dwData = 1;
CDS.cbData = 8;
CDS.lpData = NULL;
SendMessage(hwnd, WM_COPYDATA , (WPARAM)hwnd, (LPARAM) (LPVOID) &CDS);
接收部分:
case WM_COPYDATA:
COPYDATASTRUCT* cds = (COPYDATASTRUCT*) lParam;
我不知道如何构建COPYDATASTRUCT
,我刚刚放入了一些似乎有效的东西。调试时WM_COPYDATA
案件已执行,但我又不知道该怎么办COPYDATASTRUCT
.
我想在两个进程之间发送文本。
你可能会说我才刚刚开始,我在 Code::Blocks 中使用 GNU GCC 编译器,我试图避免 MFC 和依赖项。
有关如何使用该消息的示例,请参阅http://msdn.microsoft.com/en-us/library/ms649009(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms649009(VS.85).aspx。您可能还想看看http://www.flounder.com/wm_copydata.htm http://www.flounder.com/wm_copydata.htm.
The dwData
成员由您定义。将其视为您可以定义的数据类型枚举。它是您想要用来识别数据是这样那样的字符串的任何东西。
The cbData
member 是指向的数据的大小(以字节为单位)lpData
。在您的情况下,它将是字符串的大小(以字节为单位)。
The lpData
member指向要复制的数据。
因此,要传输单个字符串......
LPCTSTR lpszString = ...;
COPYDATASTRUCT cds;
cds.dwData = 1; // can be anything
cds.cbData = sizeof(TCHAR) * (_tcslen(lpszString) + 1);
cds.lpData = lpszString;
SendMessage(hwnd, WM_COPYDATA, (WPARAM)hwnd, (LPARAM)(LPVOID)&cds);
然后,接收它......
COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
if (pcds->dwData == 1)
{
LPCTSTR lpszString = (LPCTSTR)(pcds->lpData);
// do something with lpszString...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)