python - 如何让 DDE 服务器在 python 3 中工作?
问题描述
2015 年,我发布了一个关于如何在 python 中创建 DDE 服务器并连续发送数据的问题。JayleoPlayGround 对那个问题发布的答案和代码当时在 python 2.7 中完美运行,直到最近我才使用它。
由于从 2020 年 1 月起不再积极支持 Python 2,我想将我的代码移至 python 3。我在 python 3.7.6 上使用 pip 安装了 pywin32(版本 227)并尝试使用与以前相同的代码:
# coded by JayleoPlayGround
# use Portable Python 2.7.5.1 + pywin32-214
import time
import win32ui, dde
from pywin.mfc import object
class DDETopic(object.Object):
def __init__(self, topicName):
self.topic = dde.CreateTopic(topicName)
object.Object.__init__(self, self.topic)
self.items = {}
def setData(self, itemName, value):
try:
self.items[itemName].SetData( str(value) )
except KeyError:
if itemName not in self.items:
self.items[itemName] = dde.CreateStringItem(itemName)
self.topic.AddItem( self.items[itemName] )
self.items[itemName].SetData( str(value) )
ddeServer = dde.CreateServer()
ddeServer.Create('Orbitron')
ddeTopic = DDETopic('Tracking')
ddeServer.AddTopic(ddeTopic)
while True:
yourData = time.ctime() + ' UP0 DN145000001 UMusb DMfm AZ040 EL005 SNNO SATELLITE'
ddeTopic.setData('Tracking', yourData)
win32ui.PumpWaitingMessages(0, -1)
time.sleep(0.1)
在 python 3.7.6 中运行上述代码并使用 pywin32(版本 227)时,我与之交互的外部 DDE 客户端应用程序能够连接到 DDE 服务器,但未正确接收数据字符串。如前所述,如果我将 Python 2.7 与 pywin32(版本 214)一起使用,则可以正常工作。
由于没有显示错误消息,我迷失了 python 3 下的问题。我尝试了这个 python 版本(222 到 227)的所有可用 pywin32 版本,但没有成功。任何关于如何使其工作的想法将不胜感激。
解决方案
推荐阅读
- python - 如何计算python中2个列表的匹配百分比,A不会改变,B会动态改变?
- python - 使用根记录器禁用来自导入模块的日志
- python - 'Line 2D' 对象没有属性 'kind' -- pyplot.plot() 和 .plot() 不同吗?
- android - 用谷歌地图规划路线
- c++ - 在数字右侧使用左移运算符
- java - 使用 Gradle 将目录压缩到多个目的地
- api - 如何将 API 输出数据保存到 Azure 数据工厂中的数据集
- c - 我在 scanf 中的输入不起作用,返回进程并且我没有得到任何输出
- admob - Admob 上的应用打开广告 - 测试广告上没有广告配置
- python - 对数组的每个元素执行相同操作的最快方法