资源描述:
《VC++之线程和进程之用邮槽实现进程间通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC++之线程和进程之用邮槽实现进程间通信2011年01月21日星期五下午3:04一、创建应用工程 1、创建单文档应用程序工程 2、添加新单文档应用程序工程二、编辑菜单项 1、编辑Thread工程之菜单项 2、编辑Child工程之菜单项三、添加消息响应函数 a、为CThreadView类添加菜单消息响应函数 b、为CChildView类添加菜单消息响应函数四、添加代码 1、为CThreadView类添加消息响应函数代码voidCThreadView::OnReceive()
2、{ //TODO:Addyourcommandhandlercodehere HANDLEmailslot; mailslot=CreateMailslot("\\.\mailslot\mymailslot",0,MAILSLOT_WAIT_FOREVER,NULL); //创建邮槽 if(INVALID_HANDLE_VALUE==mailslot) { MessageBox("Createfail"); CloseHandle(mailslot); return; } charbuf[100]; DWORDdwread; ReadFile(mailslot,
3、buf,100,&dwread,NULL); //读文件 MessageBox(buf); CloseHandle(mailslot); } 2、为CChildView类添加消息响应函数代码voidCChildView::OnSend(){ //TODO:Addyourcommandhandlercodehere HANDLEmailslot; mailslot=CreateFile("\\.\m
4、ailslot\mymailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(INVALID_HANDLE_VALUE==mailslot) { MessageBox("Openfail"); CloseHandle(mailslot); return; } charbuf[]="你好,长江!"; DWORDdwwrite; WriteFile(mailslot,buf,strlen(buf)+1,&dwwrite,NULL); CloseHandle
5、(mailslot); }五、编译六、运行七、函数说明 1、CreateMailslot()函数声明HANDLECreateMailslot(LPCTSTRlpName,DWORDnMaxMessageSize,DWORDlReadTimeOut,LPSECURITY_ATTRIBUTESlpSecurityAttributes) 功能:创建一个邮槽。函数调用成功,返回邮槽句柄;否则,返回INVALID_HANDLE_VALUE。 2、CreateFile()函数声明HANDLE CreateFile(LPCTSTRlpFileName
6、,DWORDdwDwsiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDispostion,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile ) 功能:创建或打开一个文件、通信资源、磁盘驱动器等。 3、ReadFile()函数声明BOOL ReadFile(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesRead,LPDWORDlpNumber
7、OfBytesRead,LPOVERLAPPEDlpOverlapped) 功能:从一个文件中文件指针位置开始读取数据。成功,返回非零值;失败,返回零。 4、WriteFile()函数声明BOOL WriteFile(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesToWrite,LPDWORDlpNumberOfBytesWritten,LPOVERLAPPEDlpOverlapped)