2.Socket
3.SendMessage()处理WM_COPYDATA消息
4.PostMessage()
5.内存映射文件
分别建立名为WriteMap和ReadMap两个对话框工程.加入按钮事件: 1) 在WriteMap中加入ID=IDC_WriteMap的按钮以及响应事件OnWriteMap(). 2) 在ReadMap中加入ID=IDC_ReadMap的按钮以及响应事件OnReadMap(). 3) 下面的操作对两个工程都是一样的: a.在dlg.h 中加入struct SHARE_DATA { int time; char str[10];}; b.在dlg.cpp中加入 #define ShareMemory sizeof(SHARE_DATA) #define MAP_FILE_NAME "Shared_Memory_Example" 4) 添加相应的事件函数: a.WriteMap: void CWriteMapDlg::OnWriteMap() { HANDLE hFileMap; hFileMap = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0, ShareMemory,MAP_FILE_NAME ); if ( hFileMap == NULL ) return; LPVOID lpMap; lpMap = MapViewOfFile( hFileMap,FILE_MAP_ALL_ACCESS,0, 0,ShareMemory ); if ( lpMap == NULL ) { CloseHandle( hFileMap ); return; } memset( lpMap, 0, ShareMemory ); SHARE_DATA * pData = (SHARE_DATA*)lpMap; pData->time=1; lstrcpy( LPTSTR(pData->str), "Map Suc!!!" ); } b.ReadMap: void CReadMapDlg::OnReadMap() { HANDLE hFileMap; hFileMap = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0, ShareMemory,MAP_FILE_NAME ); if ( hFileMap == NULL || GetLastError()!=ERROR_ALREADY_EXISTS ) return; LPVOID lpMap; lpMap = MapViewOfFile( hFileMap,FILE_MAP_ALL_ACCESS,0, 0,ShareMemory ); if ( lpMap == NULL ) { CloseHandle( hFileMap ); return; } SHARE_DATA * pData = (SHARE_DATA*)lpMap; CString strMap; strMap.Format( "be Written times:= %ld, be Shared block's string = %s", pData->time, pData->str ); MessageBox( LPCTSTR(strMap) ); VERIFY( UnmapViewOfFile( (LPCVOID)lpMap ) ); CloseHandle( hFileMap ); }
6 通过dll的全局数据共享变量
7 通过硬盘上的文件进行通信
