易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

(奇技淫巧)多进程全频无窗口通讯支持同步异步回复   [复制链接]

    2023-09-01 08:52:48
    高级教程源码
    易语言资源网
    964 次浏览
    来源链接

之前写的一份代码没有完善今天把他完善了.

因为结构体的问题e开发进程通讯有些不方便.

特别是在多进程的情况下.

目前悉知的进程通讯方式 tcp  map  管道

这些用在进程通讯都有很多缺点

1.设计复杂

2.句柄不能重复使用,如管道 连接一次该句柄即刻作废.

3.需要一个识别的参数,如窗口句柄, tcp ip

4.接收函数与发送函数需要区别编写,增加了代码量

5.占用限制,如内存文件与管道,在句柄被使用之后不能再有第二个连接方除非你创建无数个对象

我在研究内核向r3 主动通讯的时候一直没有发现什么好方法 可以代码简洁思路清晰的 主动通讯 r3中所有属于自己的应用程序.

因为不管哪一种方法 都需要向通讯者提供一个接收句柄来作为通讯的钥匙,这不符合编程思想,一切应该一以简单直接了当作为原则,如果我写一个通讯都要考虑我有多少个进程 多少个窗口 ,那么我必然还需要写向通讯进程提供这些窗口句柄或者通讯句柄的代码,这显然太麻烦,所以我研究出了一种线程挂起的方式,自动的枚举出系统中符合我识别标识的进程线程,并且向他们广播我的通讯内容.

此框架支持同步异步,同步通讯可以接收到回复内容,尤其是在DLL中与外部主进程通讯得到一定的开发客观性.

出来接收线程的代码不用动,在接收回调中可进行加密处理.

此框架运行的条件是通讯者之间都可以持有对方进程的open权限.如果没有保护驱动拦截的情况下都是拥有该权限的.

   

关于优化思路:首次广播应当保存在线客户的句柄,通讯失败自然GetThreadContext会失败代表进程退出则删除该句柄的保存.

另外新进程创建可以向全进程广播自己,那么不就是有通讯者ID吗加入你的保存列队就行了

由于这是框架优化我也懒得写全了,那么简单的问题就不用问了7系统的GetThreadContext参数可能不同,另外影响寄存器的情况下可以使用线程入口的汇编字节作为通讯的标识稳定性更强



点我下载 (已有 44 次下载)

引用模块


源码文件名 模块文件名
多进程通讯.e
精易模块.ec


引用支持库


源码文件名 支持库文件名 支持库标识
多进程通讯.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
多线程支持库 2.0 5F99C1642A2F4e03850721B4F5D7C3F8
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0


[错误报告]   上一篇:简单的键鼠同步器...     下一篇:监视进程钩子扫描-内存修改扫描工具源码...