VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的
消息作用:
在进程间共享数据(内部通过创建内存映射文件)
消息介绍:
需要用到的数据结构/类型:
typedef struct tagCOPYDATASTRUCT {
ULONG_PTR dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT;
结构体参数说明:
dwData(ULONG) 保存一个数值, 可以用来作标志等
lpData(void*) 待发送的数据的起始地址(可以为NULL)
cbData(DWORD) 待发送的数据的长度
消息的参数:
hWnd: 接收数据的窗口的句柄
wParam: 传送该数据的窗口句柄(NULL也无所谓)
lParam: COPYDATASTRUCT类型变量的地址
使用示例:
COPYDATASTRUCT cds;
char msg[] = "女孩不哭";
cds.dwData = 0;
cds.lpData = msg;
cds.cbData = strlen(msg)+1; //字符串请记得把'\0'加上, 不然就错了, 这里是ANSI字符串
SendMessage(FindWindow("nbsg_class", NULL), WM_COPYDATA, 0, (LPARAM)&cds);
注意:如果要发送的是一个CString类型的字符串,那么可以这么做
CString str = _T("女孩不哭");
char* msg = str.GetBuffer(0);
这样就可以转化为 char*类型了
--------------------------------------------
接收端对该消息的一种可能处理:
BOOL CxuanzeDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
COPYDATASTRUCT* pCDS = (COPYDATASTRUCT*)pCopyDataStruct;
CString str((char*)pCDS->lpData);
str.Format(_T("%s 标志:%d"), str, pCDS->dwData);
AfxMessageBox(str);
return CDialogEx::OnCopyData(pWnd, pCopyDataStruct);
}
说明:
使用 WM_COPYDATA 消息的传递数据,其实是将要传递的数据复制到共享内存中去后,将地址传递给另一个进程.
在这个消息中,有一个标志dwData 这个数据是一个ULONG_PTR类型,无符号长整数,可以用作数据的标志.这样不同的标志,可以将传递的数据用作不同的用途!
VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的的更多相关文章
- VC++ 在两个程序中 传送字符串等常量值的方法:使用了 WM_COPYDATA 消息(转载)
转载:http://www.cnblogs.com/renyuan/p/5037536.html VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的 消息作用: ...
- 关于微信小程序中的样式使用变量值的方法
在开发过程中,通常碰到样式非固定的情况,这时候就要使用变量来规定样式,例如,一个view的宽度需要使用变量: 1. 在wxss中,定义变量:width:var(--width--); 2. 在js中, ...
- ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法
ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法 第一种情况,本地开发时,使用本地数据库,如下面的代码 <connectionStrings& ...
- 字符串--java中判断字符串是否为数字的方法的几种方法?
ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- java中判断字符串是否为数字的方法的几种方法
1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...
- jquery.ajax的url中传递中文乱码问题的解决方法
jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQu ...
- (转)Shell中获取字符串长度的七种方法
Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...
- Shell脚本中计算字符串长度的5种方法
有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令wc -L可以获取到当前行 ...
随机推荐
- xmind的第八天笔记
- poj2369 Permutations ——置换群
link:http://poj.org/problem?id=2369 置换群,最简单的那种. 找所有数字循环节的最小公倍数. /* ID: zypz4571 LANG: C++ TASK: perm ...
- Extjs控制面板组件
(1)aoolyTo:(id) renderTo:(id)呈现在哪个html里面,同上 id最好用"" contentEI:() 呈现哪个html元素里面,把eI内的内容呈现 ( ...
- Lua与C++相互调用
{--1.环境--} 为了快速入手,使用了小巧快速的vc++6.0编译器 以及在官网下载了Lua安装包..官网地址{--http://10.21.210.18/seeyon/index.jsp--} ...
- 《统计推断(Statistical Inference)》读书笔记——第6章 数据简化原理
在外行眼里统计学家经常做的一件事就是把一大堆杂七杂八的数据放在一起,算出几个莫名其妙的数字,然后再通过这些数字推理出貌似很靠谱的结论,简直就像是炼金术士用“贤者之石”把一堆石头炼成了金矿.第六章,应该 ...
- jQuery中的事件机制深入浅出
昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...
- HTTP Status 404 - /chp-adapter-web/ 问题解决
启动tomcat中是报404,后来发现是同事把web.xml删除了,加上后,正常访问!
- nodejs项目在webstorm里进行debug的设定
菜单 > Run > Edit Configurations... 菜单 > Run > Debug... 菜单 > Run > Edit Configuratio ...
- 关于华为x2中的外置SDCard的使用
一.前要 记录一下最近在开发生产过程中遇到的一个小问题.在使用x2的华为7寸平板时,由于需要大内存去录制视频,所以就使用X2自带的SDCard口,插入1个128G的SDCard卡.但是Android ...
- Editable DataGrid 实现列表新增编辑功能
今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户 ...