做游戏辅助,易语言做界面部分,python做数据处理

两个进程,可以有很多方式通讯

 

甚至可以创建个TXT文本进行通讯。

这里有一个解决方案,可以参考一下

这是我自己写的一个函数,里面是精易模块的方法

这个函数会做成dll供python调用。

可以给易语言发消息!

原理是通过管道

下面是python

import sys,os
from ctypes import CDLL,string_at,c_char_p,byref

os.add_dll_directory(sys.path[0])
dll = CDLL('进程通信库.dll')


def SendData(hwnd,str01,str02):
    # 易语言传参是文本型,这里需要编码为utf-8
    str01 = c_char_p(str01.encode('utf-8'))
    str02 = c_char_p(str02.encode('utf-8'))
    # 返回值是逻辑型
    info = dll.SendData(hwnd,str01,str02)
    return info

 这里python封装一下就可以直接用了

SendData(5379482,"mypipe","684564564654646128922124")

可以这样调用,中间那个"mypipe"名字必须保持一致,最好跟我弄一样的。这是管道名字,如果不小心搞错了是收不到消息的!!!

这个句柄就是易语言的窗口句柄,可以用大漠插件获取或者其他各种方式获取hwnd

后面的就是需要传送的文本,中文要小心编码问题,最好不用中文!

 易语言里面这样写,就可以接收到数据了。同样是精易模块

这里有个小重点:精易模块需要回调函数,咱们python没法弄。

所以只能自己写win32API管道来获取信息

而精易模块的发送信息与python的win32API管道无法对接!

所以易语言这边用了另一种库,用来发送数据给python

 自带的这个库,很简单

 这就是个按钮事件,忽略即可,重点看里面的四行!!!

这样就可以发数据了。

下面是python怎么接收数据!

import win32file
import win32pipe

while True:
    named_pipe = win32pipe.CreateNamedPipe(r'\\.\Pipe\mypipe',
                                           win32pipe.PIPE_ACCESS_DUPLEX,
                                           win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_WAIT | win32pipe.PIPE_READMODE_MESSAGE,
                                           win32pipe.PIPE_UNLIMITED_INSTANCES,
                                           65535,
                                           65535, 500, None)#缓冲区大小
    print(named_pipe)
    try:
        while True:
            try:
                win32pipe.ConnectNamedPipe(named_pipe, None)
                data = win32file.ReadFile(named_pipe, 65535, None)#缓冲区大小

                if data is None or len(data) < 2:
                    continue

                print('receive msg:', data)
            except BaseException as e:
                print("exception:", e)
                break
    finally:
        try:
            win32pipe.DisconnectNamedPipe(named_pipe)
        except:
            pass

可以自己写函数来收数据。

 

总结一下:

#python发送数据用的精易模块的dll

#接受数据用的win32API

#易语言发送数据用的自带通讯模块

#易语言接受数据用的精易模块

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐