win ce 下的进程间通信--copydata方式

使用WM_COPYDATA的消息通信,保证发送数据从原进程到目标进程,允许在进程间传递少量的只读数据,使用sendmessage()函数,接收方在数据完成复制前不能返回。

//函数原型

LRESULT SendMessage(  HWND hWnd,      //接受消息的窗口句柄
  UINT Msg,       //要发送的消息,这里是WM_COPYDATA
  WPARAM wParam, 
  LPARAM lParam 
); //copydata的结构体
typedef struct tagCOPYDATASTRUCT {
  DWORD dwData;    //发送的数据
  DWORD cbData;    //发送数据的大小
  PVOID lpData;    //指针,指向要发送的数据
} COPYDATASTRUCT;
 1 //发送进程的主程序
 2 //send the data
 3 void DataSend(HWND hDlg)
 4 {
 5     TCHAR buf[128] ={0} ;
 6     COPYDATASTRUCT cds;
 7     GetDlgItemText(hDlg, IDC_EDIT, buf, sizeof(buf));         //gain the string from the EDIT control
 8
 9     cds.dwData = 1;
10     cds.cbData = _tcslen(buf)*2;
11     cds.lpData = (PVOID)buf;
12     // hwnd为接收消息的目标窗口句柄
13     //(WPARAM)hWnd可以是NULL或者发送消息的窗口句柄
14     //COPYDATASTRUCT结构体指针
15     SendMessage(FindWindow(NULL, TEXT("copydata")), WM_COPYDATA, NULL,(LPARAM)&cds);
16 }
1 //接收进程的主程序
2 case WM_COPYDATA:
3             {
4                 COPYDATASTRUCT *pcds = (COPYDATASTRUCT *)lParam;
5                 memcpy(databuf, pcds->lpData, pcds->cbData);      //copy the data to buffer
6                 //send the receiving data to the list and display
7                 SendDlgItemMessage(hWnd, IDC_RPTLIST, LB_ADDSTRING,0,(LPARAM)(LPCTSTR)databuf);
8             }
9             break;
时间: 2024-10-08 20:06:26

win ce 下的进程间通信--copydata方式的相关文章

Win CE下的进程间通信(摘录收藏)

作者:李志刚 纪玉波 程小茁 崔朝辉 摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设 计中,进程间的通信是不可避免的.Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考.关键词 进程 进程通信 IPC Win32 API 1 进程与进程通信 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址

进程间通信的方式及比较    

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区.但是,系统空间却是"公共场所",所以内核显然可以提供这样的条件.除此以外,那就是双方都可以访问的外设了.在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过"注册表"或其它数据库中的某些表项和记录交换信息.广义上这也是进程间通信的手段,但是一般都不把这算作"进程间通信&

Win环境下的文件读写

在win环境下,有许多方法可以对文件进行读写操作,如MFC 中的CFile类,及一些开源的项目如QT中的QFile.开源的好得是可以多平台,而MFC只是微软自家的东西,对于想写跨平台的人,最好不用MFC. 最近在写开发时,突然碰到了一个问题,也是与读写文件有关,不过用的是C的方法,而不是C++,问题的表现是用C 中的Open创建的文件都是只读的,平常很少用这个方法所在网上找了下,才发现这个函数还有一个权限参数,默认是只读.现将C方式下的两种文件操作归纳下 open比起fopen是更低级别的IO操

win环境下,django+postgresql配置

先下载postgresql的python包,选择合适自己的python版本和平台32位还是64位,http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载win环境下postgresql接口,http://www.stickpeople.com/projects/python/win-psycopg/ 设置django settings.py DATABASES项 注:第2步如果不操作就会出现from psycopg2._psycopg import

bootstrap37-Bootstrap 下拉菜单对齐方式

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 下拉菜单对齐方式</title> <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css&quo

CE下可用的3G

3G有三种标准: 中国移动的是TD的(国产标准,大唐),开发modem的有联芯科技.大唐.展讯 CDMA,是中国电信的,基本上都是高通的芯片 WCDMA,是中国联通的 我知道英飞凌有这样的芯片 CE下可用的模块: TD:LC6311(大唐) CDMA:MC8331A(中兴) 注:驱动都有(包括多通道),CE6.0,MX27.

Linux下基于源码方式安装MySQL 5.6

MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文描述了如何在源码方式下安装MySQL. 1.安装环境及介质#安装环境SZDB:~ # cat /etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3

win7下 文件默认打开方式被设置为用explorer.exe打开

win7下 文件默认打开方式被设置为用%SystemRoot\windows\explorer.exe打开 . 然后右键该文件->属性,发现想改回默认打开方式却没有相关按钮.选项了. 这时候双击该文件,就会一个接一个的运行explorer进程,一直到几千个: 这时候把该文件放进回收站,即可停止explorer进程的增加. 网上去查了几个小时的资料,还是解决不了. 去 旓旓的编程大观园 qq群提问,也没有人解答.这时群里的pianoid(stephen,138443321)发言了,然后私聊他.远程

win 7 下合并多个表格

首先我这里从服务器上下载了一大堆的表格 分类放好之后 这里我们需要把每一类的表格合并成一张表格 这里我们使用win 7下的copy的命令 这里我的表格的格式是csv 使用cmd 我们先cd到你的表格的目录下 copy *.csv all-groups.csv,all-group的名字,可以任意.然后按enter,等待完成就可以了