收录日期:2018/08/17 01:45:07 时间:2016/05/20 18:28:04 标签:进程/线程/DLL
好象可以通过管道或者共享内存实现,不知道该如何做,请教各位。
用内存映射文件
这也太笼统了,我不是天才,希望各位能详细点
分好象少了点,不知道如何加分
RegisterWindowMessage
SendMessage

OR

Pipe
使用内存映射文件的方法
  1、利用内存映射文件进行文件I/O操作,进行文件I/O操作需要下面几个步骤:
  步骤一:调用CreateFile()函数,以适当的方式创建或打开一个文件核心对象;
  步骤二:把CreateFile()函数返回的文件句柄作为参数,传给CreateFileMapping()函数,由CreateFileMapping()函数创建一个文件映射核心对象的适当属性;
  步骤三:创建了文件映射核心对象后,调用MapViewOfFile()函数,告诉系统把文件的哪一部分映射到进程的地址空间中,以何种方式映射;
  步骤四:利用MapViewOfFile()函数返回的指针来使用文件数据;
  步骤五:操作完毕后,调用UnmapViewOfFile()函数,告诉系统撤销对文件映射核心对象的映射;
  步骤六:使用CloseHandle()函数关闭文件映射核心对象;
  步骤七:使用CloseHandle()函数关闭文件核心对象;
  利用内存映射文件实现WIN32进程间的通信
  一个进程打开的文件映射对象的映射区对所有的WIN32进程都是可视的,并且映射区的地址对所有WIN32进程都是一样的。一个进程可以打开一个文件,创建文件映射核心对象,用MapViewOfFile()函数打开文件视图,然后将文件映射的地址传给另一个进程,第二个进程就可以读出文件中的数据。这种方法需要进行各进程间的同步,实现起来较困难。并且在Windows中,一个映射区在不同的WIN32进程空间中对应的地址不同,因此为了与Windows兼容,尽量不要使用这种方法。
  第二种方法是两个进程使用同一文件映射核心对象,打开各自的视图,或者父进程把自己创建的文件映射核心对象继承给子进程使用。这种方法比较安全有效。
  第三种方法是创建基于页面交换文件的内存映射对象。在调用CreateFileMapping()函数时,传递文件句柄为0xFFFFFFFF,系统就从页面交换文件中提交物理存储,然后进程之间按照第二种方法进行通信。这种方法不用事先准备一个特殊的文件,非常方便
多个程序在访问文件映射对象,为了避免访问到“脏”数据,最好采用信号量互斥地访问。所以时序一定要控制好。
另外,我在使用文件映射对象,有时关闭其中一个程序(进程),文件映射对象会丢失了。不知是哪个参数设置出了问题。请指点。(到运行时,访问是没有问题的)
简单的可以用消息来传递。 WM_APP起始的被系统认为是进程间消息。
简单的进程通信可以用消息。远程的就要用RPC了,比较复杂些。