使用WM_COPYDATA消息在C++和C#程序之间互传数据

【网通】点击此处下载源程序                         【电信、网通】点击此处下载源程序

【网通】点击此处下载演示程序                     【电信、网通】点击此处下载演示程序

【下载说明】
1、单击上面这个地址,打开下载页面。
2、点普通下载--等待30秒--点“下载”按钮--保存

点击此处查看原文


C#发送和接收程序如上图


点击C#发送程序的Ping按钮之后的接收程序,如上图


C++版本的发送和接收程序


点击C++发送程序的Ping按钮之后,C++接收程序的界面如上图

介绍

演示程序演示了怎么样在C++和C#程序之间使用WM_COPYDATA消息来发送和接收数据。

为什么使用WM_COPYDATA消息?

通常WM_COPYDATA消息被用来发送一个有限长度的数据,在同一个机器的不同进程之间。在.NET中仍然可以通过这种方法来实现。这个演示是为了那些需要处理那些旧的系统环境中而做的。

演示程序有4个程序和1个DLL组成。两个程序是用C++(MS Version 5.0)写的,另外两个是用C#(.NET 2003)写的。C++的exe文件和C#的exe文件将会发送下面的结构体数据给C++和C#的接受程序。

struct sTagData
{//this is the structure that will be sent (copied) by the WM_COPYDATA
private:
    char szTag[ciMaxTag];
    char szData[ciMaxData];
}

DLL文件使用VC 5.0写的,它重新包装了WM_COPYDATA消息。


另外,DLL文件提供了一个统一的方法:

  1. 保护应用程序,并阻止那些不能处理WM_COPYMESSAGE消息的第三方进程
  2. 允许接收指定发送者的有限长度的消息,通过handle或是发送者的id
  3. 使用加密方法来阻止黑客侦听消息

解压时,使用C盘的作为全路径。下面是解压路径:

  • C:\WmCpyDta
  • C:\WMCpyDat\Build - 所有工程的编译输出目录
  • C:\WMCpyDat\From_C - 发送结构体的C++程序
  • C:\WMCpyDat\TO_C - 接收结构体的C++程序
  • C:\WMCpyDat\From_C_Sharp – 发送结构体的C#程序
  • C:\WMCpyDat\\TO_C_Sharp - 接收结构体的C#程序

使用演示程序之前,打开build目录,然后运行4个exe文件。在窗口上点击“发送”按钮之后,消息就会出现在接受窗口上。两个发送程序都用到了DLL接口。两个接收程序都是在WindowProc函数里面来接收数据的。

支持的平台

这些程序仅仅在xp平台上做了测试.

其他须知

Philip McGahan是这个演示程序最初的创建者。除此之外,没有引用过其他源程序。任何部分或全部使用这个演示程序的人,都应该指出曾引用过Philip McGahan的程序。

最后,需要告诉阅读这篇文章的人,我也是一个C#新人。我试着使用C#来编译一个DLL。我不是很愿意去写一些不安全的块。这样会看起来很笨拙,当我对C#了解更多之后,我会重新考虑这个问题。

修订历史

  • 10/23/2003 - 初次发布
【更多阅读】

  1. [原]ManageApps:C#读取Windows系统中的已经安装的程序并卸载软件
  2. [原]GetIcons:C#提取应用程序的图标资源
  3. [原]IniFile.cs:C#来操作ini配置文件
  4. [原]Baidu:C#利用百度来搜索网页、图片、视频等等
  5. [原]Hotkey.cs:为应用程序添加热键
  6. [原]QQHelper:QQ大家来找茬 辅助工具 外挂
  7. [译]在C#中使用J#运行时来压缩与解压缩
  8. [原]Cls_Ini.cls:VB写的操作ini配置文件的类
  9. [原]WMICodeCreator:C#产生WMI代码的工具
  10. [原]《The C Programming Language》电子书下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值