问题描述
我希望在进程之间发送文本。我发现了很多这样的例子,但没有一个,我可以得到工作。这是我到目前为止:
I wish to send text between processes. I have found lots of examples of this but none that I can get working. Here is what I have so far:
为发送部分:
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。
I dont know how to construct the COPYDATASTRUCT, I have just put something in that seems to work. When debugging the WM_COPYDATA case is executed, but again I dont know what to do with the COPYDATASTRUCT.
我想在两个进程之间发送文本。
I would like to send text between the two processes.
因为你可能告诉我刚刚开始,我在Code :: Blocks中使用GNU GCC Compiler,我试图避免MFC和依赖。
As you can probably tell I am just starting out, I am using GNU GCC Compiler in Code::Blocks, I am trying to avoid MFC and dependencies.
推荐答案
有关如何使用邮件的示例,请参阅。您还可以查看。
For an example of how to use the message, see http://msdn.microsoft.com/en-us/library/ms649009(VS.85).aspx. You may also want to look at http://www.flounder.com/wm_copydata.htm.
dwData
成员由您定义。想象它像一个数据类型枚举,你要定义。
The dwData
member is defined by you. Think of it like a data type enum that you get to define. It is whatever you want to use to identify that the data is a such-and-such string.
cbData
member是 lpData
指向的数据的大小(以字节为单位)。
The cbData
member is the size in bytes of the data pointed to by lpData
. In your case, it will be the size of the string in bytes.
lpData
成员指向数据
因此,要传输单个字符串....
So, to transfer a single string....
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);
然后,接收.... ....
Then, to receive it....
COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
if (pcds->dwData == 1)
{
LPCTSTR lpszString = (LPCTSTR)(pcds->lpData);
// do something with lpszString...
}
这篇关于使用WM_COPYDATA在进程之间发送数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!