开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 岛国秋刀鱼
收起左侧

[易语言纯源码] 进程通讯 共享内存例子

[复制链接]
结帖率:100% (2/2)
发表于 2024-6-26 21:22:39 | 显示全部楼层   贵州省毕节市
功德无量
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 2 天

 楼主| 发表于 2024-6-26 18:53:58 | 显示全部楼层   重庆市重庆市

MyCustomSharedMemory

本帖最后由 岛国秋刀鱼 于 2024-6-26 18:55 编辑
FanLi 发表于 2024-6-26 18:37
大佬可以写一个易语言和python进程通信的例子吗

还可以调用winapi跟帖子上说的一样创建一个共享 然后用py加入这个内存区域下面是大致的方法自己调试
[Python] 纯文本查看 复制代码
import ctypes
from ctypes import wintypes

# 定义Windows API函数和常量
OpenFileMappingA = ctypes.windll.kernel32.OpenFileMappingA
OpenFileMappingA.argtypes = [wintypes.DWORD, wintypes.BOOL, wintypes.LPCSTR]
OpenFileMappingA.restype = wintypes.HANDLE

MapViewOfFile = ctypes.windll.kernel32.MapViewOfFile
MapViewOfFile.argtypes = [wintypes.HANDLE, wintypes.DWORD, wintypes.DWORD, wintypes.DWORD, ctypes.c_ulonglong]
MapViewOfFile.restype = wintypes.LPVOID

UnmapViewOfFile = ctypes.windll.kernel32.UnmapViewOfFile
UnmapViewOfFile.argtypes = [wintypes.LPCVOID]
UnmapViewOfFile.restype = wintypes.BOOL

CloseHandle = ctypes.windll.kernel32.CloseHandle
CloseHandle.argtypes = [wintypes.HANDLE]
CloseHandle.restype = wintypes.BOOL

# 共享内存名称
shared_memory_name ="MyCustomSharedMemory"
# 打开文件映射对象
file_mapping_handle = OpenFileMappingA(
    wintypes.FILE_MAP_ALL_ACCESS,  # 访问权限
    False,  # 是否继承句柄
    shared_memory_name  # 共享内存名称
)

if file_mapping_handle == 0:
    print("Failed to open file mapping object")
    exit(1)

# 映射视图
mapped_view = MapViewOfFile(
    file_mapping_handle,  # 文件映射对象句柄
    wintypes.FILE_MAP_ALL_ACCESS,  # 访问权限
    0,  # 高位偏移
    0,  # 低位偏移
    0  # 映射大小(0表示整个文件映射对象)
)

if mapped_view == 0:
    print("Failed to map view of file")
    CloseHandle(file_mapping_handle)
    exit(1)

# 现在你可以使用 mapped_view 来访问共享内存
# 例如,读取或写入数据

# 示例:写入数据到共享内存
data_to_write = b"Hello, Shared Memory!"
ctypes.memmove(mapped_view, data_to_write, len(data_to_write))

# 示例:从共享内存读取数据
buffer = ctypes.create_string_buffer(len(data_to_write))
ctypes.memmove(buffer, mapped_view, len(data_to_write))
print("Read from shared memory:", buffer.value.decode())

# 解除映射视图
if not UnmapViewOfFile(mapped_view):
    print("Failed to unmap view of file")

# 关闭文件映射对象句柄
if not CloseHandle(file_mapping_handle):
    print("Failed to close file mapping object handle")


回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 2 天

 楼主| 发表于 2024-6-26 18:50:31 | 显示全部楼层   重庆市重庆市
FanLi 发表于 2024-6-26 18:37
大佬可以写一个易语言和python进程通信的例子吗

很简单啊用易语言搞个服务端 我直接用的服务器组件 不过建议你用tcp之类的方式论坛方法很多自己搜
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
_服务器1_客户进入  
调试输出 (服务器1.取回客户 ())
子程序名返回值类型公开备 注
_服务器1_数据到达  
调试输出 (到文本 (服务器1.取回数据 ()))


i支持库列表   支持库注释   
spec特殊功能支持库


正在进行名称连接...
正在统计需要编译的子程序
正在编译...
正在生成主程序入口代码
程序代码编译成功
正在封装易格式目的代码
开始运行被调试程序
* “127.0.0.1:54471”
* “Hello, Server!”
被调试易程序运行完毕

测试输出的


往下是py里面的连接这个服务器并发送数据等等  不就通讯了吗?
[Python] 纯文本查看 复制代码
import socket

def tcp_client():
    # 创建一个TCP/IP套接字
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 连接到服务器
    server_address = ('127.0.0.1', 7894)
    print(f'连接到服务器 {server_address}')
    client_socket.connect(server_address)

    try:
        # 发送数据
        message = 'Hello, Server!'
        print(f'发送: {message}')
        client_socket.sendall(message.encode())

        # 接收数据
        data = client_socket.recv(1024)
        print(f'收到: {data.decode()}')

    finally:
        print('关闭连接')
        client_socket.close()

if __name__ == '__main__':
    tcp_client()
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)

签到天数: 16 天

发表于 2024-6-26 18:37:08 | 显示全部楼层   河南省商丘市
大佬可以写一个易语言和python进程通信的例子吗
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 17 天

发表于 2024-6-26 15:58:06 | 显示全部楼层   江西省上饶市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 14 天

发表于 2024-6-26 15:23:25 | 显示全部楼层   山东省青岛市
简单实用,感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)
发表于 2024-6-26 15:18:59 | 显示全部楼层   吉林省辽源市
看看学习下
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2024-6-26 15:04:00 | 显示全部楼层   广东省惠州市
感谢老大的无私奉献!!!
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 6 天

发表于 2024-6-26 14:38:26 | 显示全部楼层   广东省梅州市

感谢分享。
回复 支持 反对

使用道具 举报

结帖率:80% (57/71)

签到天数: 15 天

发表于 2024-6-26 14:36:05 | 显示全部楼层   广东省深圳市
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表