常用的进程间通信的方法

来源:互联网 发布:数字扫描识别软件 编辑:程序博客网 时间:2024/04/27 14:27

1:最简单的方法可能是直接给目标进程的窗口发生消息了。但是发生消息是有些限制的,对于数据量比较大的时候,需要发生WM_COPYDATA这个消息,也就是用剪贴板来实现消息传递。这种方式应该是比较灵活的,实现起来也最简单,直接用了Windows的消息循环,这样在处理的时候,也比较简单灵活些。

 2:采用共享内存,具体的方法可以看MSDN中CreateFileMapping这个API,会有一些很好的例子。这种方式的问题就是,接收方需要监视共享内存中数据的变化,可以定时查询下。

 3:采用命名管道进行进程间通信,CreateNamedPipe,MSDN中,对这个API的说明里面,有一个非常好的例子。管道通信不仅可以解决本地进程间的通信,甚至可以解决远程的进程通信。

4:采用Socket通信,这种方式显得有些怪,但是使用起来也非常灵活,网络通信都可以解决,本地进程的通信当然没有问题的了。但是这种方式的开销要比命名管道要大,因为需要开启一个服务端,这样,这个服务外界也是可以访问的,这样,可能会造成安全隐患(当然如果在创建服务端的时候,绑定的IP是127.0.0.1这样的,外界应该是访问不到的,这样可以达到本地安全通信的目的)。

5:还有一直方法,就是通信双方都往固定的地方写数据,双方都去监视对应的数据区(例如监视注册表、文件的变化),如果有变化,就按照约定的方式读取出来。这样也可以达到通信的目的,这个方法有点笨,效率可能比较低,但是有时候,非常有效,在下一篇中,我们会举一个这样的例子。

以上这些方法,是我用过的一些方法,如果还有什么更好的方法,希望大家可以分享^_^

原创粉丝点击