争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

如何完成win9X进程间数据通讯技术

时间:2024/7/15作者:未知来源:争怎路由网人气:

FILE_MAP_WRITE,0,0,0);
  其他进程访问共享对象,需要获得对象名并调用OpenFileMapping函数。
  HANDLE hMySharedMapFile=OpenFileMapping(FILE_MAP_WRITE,
  FALSE,“MySharedMem");
  一旦其他进程获得映射对象的句柄,可以像创建进程那样调用MapViewOfFile函数来映射对象视图。用户可以使用该对象视图来进行数据读写操作,以达到数据通讯的目的。
  当用户进程结束使用共享内存后,调用UnmapViewOfFile函数以取消其地址空间内的视图:
  if (!UnmapViewOfFile(pszMySharedMap
  View))
  { AfxMessageBox(“could not unmap view of file"); }
  3.2、利用共享内存DLL
  共享数据DLL允许进程以类似于Windows 3.1 DLL共享数据的方式访问读写数据,多个进程都可以对该共享数据DLL进行数据操作,达到共享数据的目的。在WIN32中为建立共享内存,必须执行以下步骤:
  首先创建一个有名的数据区。这在Visual C++中是使用data_seg pragma宏。
使用data_seg pragma宏必须注意数据的初始化:
  #pragma data_seg(“MYSEC")
  char MySharedData[4096]={0};
  #pragma data_seg()
  然后在用户的DEF文件中为有名的数据区设定共享属性。
  LIBRARY TEST
  DATA READ WRITE
  SECTIONS
  .MYSEC READ WRITE SHARED
  这样每个附属于DLL的进程都将接受到属于自己的数据拷贝,一个进程的数据
变化并不会反映到其他进程的数据中。
  在DEF文件中适当地输出数据。以下的DEF文件项说明了如何以常数变量的形式
输出MySharedData。
  EXPORTS
  MySharedData CONSTANT
  最后在应用程序(进程)按外部变量引用共享数据。
  extern _export"C"{char * MySharedData[]}
  进程中使用该变量应注意间接引用。
  m_pStatic=(CEdit*)GetDlgItem(IDC_SHARED);
  m_pStatic->GetLine(0,*MySharedData,80);

3.3、用于传输只读数据的WM_COPYDATA
  传输只读数据可以使用Win32中的WM_COPYDATA消息。该消息的主要目的是允许在进程间传递只读数据。Windows95在通过WM_COPYDATA消息传递期间,不提供继承同步方式。SDK文档推荐用户使用SendMessage函数,接受方在数据拷贝完成前不返回,这样发送方就不可能删除和修改数据:
  SendMessage(hwnd,WM_COPYDATA,wPara
  m,lParam);
  其中wParam设置为包含数据的窗口的句柄。lParam指向一个COPYDATASTRUCT的结构:
  typedef struct tagCOPYDATASTRUCT{
  DWORD dwData;//用户定义数据
  DWORD cbData;//数据大小
  PVOID lpData;//指向数据的指针
  }COPYDATASTRUCT;
  该结构用来定义用户数据。
  3.4、直接调用ReadProcessMemory和WriteProcessMemory函数实现进程间通讯
  通过调用ReadProcessMemory以及WriteProcessMemory函数用户可以按类似与Windows3.1的方法实现进程间通讯,在发送进程中分配一块内存存放数据,可以调用GlobalAlloc或者VirtualAlloc函数实现:
  pApp→m_hGlobalHandle=GlobalAlloc(GMEM_SHARE,1024);
  可以得到指针地址:pApp→mpszGlobalHandlePtr=(LPSTR)GlobalLock(pApp→m_hGlobalHandle);
  在接收进程中要用到用户希望影响的进程的打开句柄。为了读写另一进程,应
按如下方式调用OpenProcess函数:
  HANDLE hTargetProcess=OpenProcess(
  STANDARD_RIGHTS_REQUIRED

关键词:如何完成win9X进程间数据通讯技术




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版