接收端收不到 SendMessage发送的消息
2016-08-10 15:05
369 查看
使用C#的 SendMessage 发送消息给另一个进程, 如下:
接收端死活都收不到数据, 百思不得其解, 后来实在没有办法, 修改了一下COPYDATASTRUCT的定义为:
public const int WM_COPYDATA = 0x004A;
[StructLayout(LayoutKind.Sequential)] public struct COPYDATASTRUCT { public int Reserved; public int Length; public int pData; }
#region 打包数据结构 IntPtr pAgr = Marshal.AllocHGlobal(szData.Length); Marshal.Copy(szData, 0, pAgr, szData.Length); COPYDATASTRUCT cds; cds.Length = szData.Length; cds.Reserved = IntPtr.Zero; cds.pData = (int)pAgr; IntPtr pcbData = Marshal.AllocHGlobal(Marshal.SizeOf(cds)); Marshal.StructureToPtr(cds, pcbData, false); #endregion
SendMessage((int)HWND, (uint)WM_COPYDATA, (int)WndHandle, (int)pcbData);
接收端死活都收不到数据, 百思不得其解, 后来实在没有办法, 修改了一下COPYDATASTRUCT的定义为:
</pre><pre code_snippet_id="1820860" snippet_file_name="blog_20160810_6_9918410" name="code" class="csharp">[StructLayout(LayoutKind.Sequential)] public struct COPYDATASTRUCT { public IntPtr Reserved; public int Length; public IntPtr pData; }
居然就可以了...无语. 不明白是什么问题. 先用着先.
相关文章推荐
- 怎么获得主窗口的CWnd*?怎么把CWnd*变成HWND?怎么给HWND发送WM_USER消息?SendMessage(hwnd,WM_USER,0,0);可是主窗口接收不到
- 启动任务StartTask() 发送完消息队列 自己删除,接收方一直显示数据 用OSQFlush(Str_Q); //清空消息队列 下面纠结接收不到了 哈哈
- 关于 微信发送被动回复音乐消息 用户接收不到的问题
- 关于百度云、极光的推送的问题,为什么控制台发送消息成功,而手机端接收不到消息
- Android 有时接收不到自己发送的广播消息
- 笔记:基于winform的应用程序,发生方通过sendmessage发送消息接收方无法成功接收消息
- PB发送和接收消息send SendMessage
- VC MainFrame接收SendMessageToDescendants传进消息 CDockablePane 悬浮时接收不到
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- Sping JMS使用消息转换器发送或接收消息
- Handler消息传递机制(四)子线程接收主线程发送的消息
- 如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息
- Android 使用EventBus发送消息接收消息
- RabbitMQ+Spring Quartz 实现消息的定时发送和接收
- 关于VC++中,两种自定义消息的发送与接收的方法实现进行说明。
- Smack开发Demo---发送并接收消息
- ActiveMQ 部署及发送接收消息
- 使用JMS发送和接收text和Object类型的消息
- C#调用API接收发送窗口消息
- CXF发送、接收消息超时设置