有关WM_COPYDATA的帮助 [英] Help with WM_COPYDATA
本文介绍了有关WM_COPYDATA的帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,我正准备使用wm_copydata在2个应用程序之间进行通信.
我不确定如何使用COPYDTASTRUCT通过HWND.
Hello all, I am tring to communicate between 2 applications using wm_copydata.
I am not sure how to pass HWND using COPYDTASTRUCT.
HWND hWnd = FindWindow(NULL, "Advisor");
if (hWnd)
{
/////Sending Application.
COPYDATASTRUCT cds;
ZeroMemory(&cds, sizeof(COPYDATASTRUCT));
cds.dwData = WM_CREATE;
cds.lpData = (HWND)ResulthWnd;
cds.cbData = sizeof(ResulthWnd);
SendMessage(hWnd,WM_COPYDATA,(WPARAM)ResulthWnd,(LPARAM)&cds);
}
////////Receiving Application
switch (pCopyDataStruct->dwData)
{
case WM_CREATE:
HWND SenderWnd = (HWND)pCopyDataStruct->lpData;
break;
}
有人可以帮忙吗?
在此先感谢.
Can someone please help.
Thanks in advance.
推荐答案
成员cds.lpData
应该是指针(LPARAM)&ResultWnd
(请修正世界结果"中的拼写错误),而不是.
我想指出的是,在两个不同进程之间交换数据是什至在NT技术之前创建的传统Windows API的产物,而不是主流的OS功能.实际的多进程系统中的进程应该是隔离的,并且只能通过IPC(例如套接字)进行通信.因此,WM_COPYDATA
既不安全也不可靠.您需要对此做出谨慎的决定,并考虑其他选择.这种方法表面上的简单性可能非常诱人.
另请参见:
http://www.flounder.com/wm_copydata.htm [使用WM_COPYDATA在.NET和MFC之间进行进程间通信 [ ^ ].
—SA
The membercds.lpData
should be a pointer,(LPARAM)&ResultWnd
(please fix the typo in the world "Result"), notHWND
.
I would like to note, that exchanging data between two different processes is the artifact of the legacy Windows API created even before NT technology and is not a mainstream OS feature. The processes in real multi-process systems are supposed to be isolated and communicating only via IPC, such as sockets. So,WM_COPYDATA
is neither safe not robust. You need to make a careful decision about it and consider alternative. The apparent simplicity of the approach could be very deceiving.
See also:
http://www.flounder.com/wm_copydata.htm[^],
Interprocess Communication Between .NET and MFC Using WM_COPYDATA[^].
—SA
这篇关于有关WM_COPYDATA的帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文