北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 5136|回复: 2

[zmud 4.62] DDE 问题

[复制链接]
发表于 2011-4-26 19:32:46 | 显示全部楼层 |阅读模式
我有一个python的DDE test server

import win32ui
from pywin.mfc import object
import dde
class MySystemTopic(object.Object):
def __init__(self):
  object.Object.__init__(self, dde.CreateServerSystemTopic())
def Exec(self, cmd):
  print "System Topic asked to exec", cmd
class MyOtherTopic(object.Object):
def __init__(self, topicName):
  object.Object.__init__(self, dde.CreateTopic(topicName))
def Exec(self, cmd):
  print "Other Topic asked to exec", cmd
class MyRequestTopic(object.Object):
def __init__(self, topicName):
  topic = dde.CreateTopic(topicName)
  topic.AddItem(dde.CreateStringItem(""))
  object.Object.__init__(self, topic)
def Request(self, aString):
  print "Request Topic asked to compute length of:", aString
  return(str(len(aString)))
server = dde.CreateServer()
server.AddTopic(MySystemTopic())
server.AddTopic(MyOtherTopic("RunAnyCommand"))
server.AddTopic(MyRequestTopic("ComputeStringLength"))
server.Create('RunAny')
while 1:
win32ui.PumpWaitingMessages(0, -1)


在zmud 4.62 里面执行#DDE RunAny RunAnyCommand hihihi ,能够看到python里面print出来"Other Topic asked to exec hihihi".

用函数%dde, %ddeopen, %ddepoke,在mud里面都只显示“什么?”。显然是函数无法调用。

谁能告诉一下到底应该怎么用dde函数从一个dde server里面获取值?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-4-26 21:38:41 | 显示全部楼层
用函数%dde, %ddeopen, %ddepoke,在mud里面都只显示“什么?”。显然是函数无法调用。

谁能告诉一下到底应该怎么用dde函数从一个dde server里面获取值?




#dde相当于subroutine,%dde是函数所以要返回字符串值,你直接在命令行里执行%dde,返回的字符串就回送到mud,是没有意义的指令,所以有“什么”,你试试看#say %dde(..)
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-4-27 17:43:47 | 显示全部楼层
谢谢,#show #say 我昨天都试过了,今天发现问题在于调用错了,%dde是要返回值的,调用上面的RunAnyCommand是不行的,换成#say %dde(RunAny,ComputeStringLength,hihdfljaljfdlafd)就work了,thanks!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-1 09:38 PM , Processed in 0.011315 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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