没有合适的资源?快使用搜索试试~ 我知道了~
利用SendMessage 实现两个EXE之间通信
4星 · 超过85%的资源 需积分: 50 172 下载量 51 浏览量
2012-09-14
11:42:22
上传
评论 3
收藏 32KB DOC 举报
温馨提示
试读
3页
简单两个exe如何发送消息的可以看看,uer32.dll sendMessage 实现
资源推荐
资源详情
资源评论
利用 SendMessage 实现 C#进程间通信 C# 2010-02-05 12:36:01 阅读 505 评论 0 字号:大中小订
阅 进程之间通讯的几种方法:
在 Windows 程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有:
使用内存映射文件
通过共享内存 DLL 共享内存
使用 SendMessage 向另一进程发送 WM_COPYDATA 消息
比起前两种的复杂实现来,WM_COPYDATA 消息无疑是一种经济实惠的一中方法.(ZT)
WM_COPYDATA 消息的主要目的是允许在进程间传递只读数据。Windows 在通过 WM_COPYDATA
消息传递期间,不提供继承同步方式。SDK 文档推荐用户使用 SendMessage 函数,接受方在数据拷
贝完成前不返回,这样发送方就不可能删除和修改数据:
这个函数的原型及其要用到的结构如下:
SendMessage(hwnd,WM_COPYDATA,wParam,lParam);
其中,WM_COPYDATA 对应的十六进制数为 0x004A
wParam 设置为包含数据的窗口的句柄。lParam 指向一个 COPYDATASTRUCT 的结构:
typedef struct tagCOPYDATASTRUCT{
DWORD dwData;//用户定义数据
DWORD cbData;//数据大小
PVOID lpData;//指向数据的指针
}COPYDATASTRUCT;
该结构用来定义用户数据。
具体过程如下:
首先,在发送方,用 FindWindow 找到接受方的句柄,然后向接受方发送 WM_COPYDATA 消息.
接受方在 DefWndProc 事件中,来处理这条消息.由于中文编码是两个字节,所以传递中文时候字节长度
要搞清楚.
具体体代码如下:
//----------------------------------发送方----------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WinFormSendMsg
{
public partial class Form1 : Form
{
const int WM_COPYDATA = 0x004A;
public Form1()
{
InitializeComponent();
alunlearnNet
- 粉丝: 8
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页