精易论坛
标题: 进程通讯 共享内存例子 [打印本页]
作者: 岛国秋刀鱼 时间: 2024-6-26 14:09
标题: 进程通讯 共享内存例子
精易模块直接就有对应api不用自己 不用自己再声明 愿意自己声明也可以自己去查对应api
这个是创建一个共享的进程
窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
hMapFile | 整数型 | | |
lpMapAddress | 整数型 | | |
ff | 文本型 | | |
ff =
“我是啊啊啊啊”hMapFile =
CreateFileMappingA ( #INVALID_HANDLE_VALUE, 0,
#PAGE_READWRITE, 0, 1024,
“MyCustomSharedMemory”) 调试输出 (hMapFile
)lpMapAddress =
MapViewOfFile (hMapFile,
#FILE_MAP_ALL_ACCESS, 0, 0, 1024
) 写到内存 (ff, lpMapAddress,
)
然后加入这个共享的进程
窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
hMapFile | 整数型 | | |
lpMapAddress | 整数型 | | |
bb | 字节集 | | |
hMapFile =
OpenFileMappingA ( #FILE_MAP_ALL_ACCESS, 0,
“MyCustomSharedMemory”) 调试输出 (hMapFile
)lpMapAddress =
MapViewOfFile (hMapFile,
#FILE_MAP_ALL_ACCESS, 0, 0, 1024
) 调试输出 (lpMapAddress
)调试输出 (指针到文本 (lpMapAddress
))
作者: 南少 时间: 2024-6-26 14:30
感谢分享。
作者: wuqingg 时间: 2024-6-26 14:36


作者: 易语飞扬 时间: 2024-6-26 14:38
感谢分享。
作者: 艾玛克138 时间: 2024-6-26 15:04
感谢老大的无私奉献!!!
作者: hjinpwhe1 时间: 2024-6-26 15:18
看看学习下
作者: kyo9766 时间: 2024-6-26 15:23
简单实用,感谢分享
作者: 易神 时间: 2024-6-26 15:58
感谢分享,很给力!~
作者: FanLi 时间: 2024-6-26 18:37
大佬可以写一个易语言和python进程通信的例子吗
作者: 岛国秋刀鱼 时间: 2024-6-26 18:50
很简单啊用易语言搞个服务端 我直接用的服务器组件 不过建议你用tcp之类的方式论坛方法很多自己搜
窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
调试输出 (服务器1.
取回客户 ())
调试输出 (到文本 (服务器1.
取回数据 ())
)
正在进行名称连接...
正在统计需要编译的子程序
正在编译...
正在生成主程序入口代码
程序代码编译成功
正在封装易格式目的代码
开始运行被调试程序
* “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()
作者: 岛国秋刀鱼 时间: 2024-6-26 18:53
标题: MyCustomSharedMemory
本帖最后由 岛国秋刀鱼 于 2024-6-26 18:55 编辑
还可以调用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")
作者: 笨来无一悟 时间: 2024-6-26 21:22
功德无量
作者: 夏亿 时间: 2024-6-26 21:55
支持开源~!感谢分享
作者: 亿意亦易 时间: 2024-6-26 22:33
支持大佬
作者: bianyuan456 时间: 2024-6-27 00:08
已经顶贴,感谢您对论坛的支持!
作者: lqylbh 时间: 2024-6-27 01:59
感谢分享,很给力!~
作者: 查过 时间: 2024-6-27 07:26
感谢分享,很给力!~
作者: 豆豆灰常开心 时间: 2024-6-27 07:31
下个学习一下
作者: year1970 时间: 2024-6-27 07:55
感谢分享
作者: 一指温柔 时间: 2024-6-27 09:28
感谢分享,很给力!~
作者: ctry78985 时间: 2024-6-27 10:44
感谢分享
作者: 小坏人 时间: 2024-6-27 10:55
感谢分享,很给力!~
作者: 查过 时间: 2024-6-28 07:38
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 豆豆灰常开心 时间: 2024-6-28 07:42
感谢您对论坛的支持!
作者: 光影魔术 时间: 2024-6-28 08:05
感谢分享源码
作者: please 时间: 2024-6-28 09:37
感谢分享,支持开源!!!
作者: pq9999 时间: 2024-6-28 14:48
感谢分享
作者: qq977352880 时间: 2024-6-30 02:30
感谢分享,很给力!~
作者: 胖子葛格 时间: 2024-7-2 18:58
感谢分享。
作者: pq9999 时间: 2024-7-16 10:56
谢谢,楼主分享
作者: jia201314973 时间: 2024-8-4 09:09
支持开源~!感谢分享
作者: pjshow 时间: 2024-9-21 00:09
没看到下载地址呀



作者: 你送的花开了 时间: 2024-10-31 20:30
jy模块里面好像没有FILE_MAP_ALL_ACCESS这个常量
作者: nunu0530 时间: 2025-6-24 11:14
支持开源~!感谢分享
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |