在mudbuilder上的胡扯3

大力丸for雄风渐失的zmud4.62

zmud4.62已经比较老了,需要壮壮阳咯.(ps:福州小贩的大力丸从来就没卖的,当年可害得俺白ask了一个下午。。。。。。)
据俺所知,扩展zmud462的方法有4种。(嘿嘿,和孔乙己的"茴"有得一拼)
1、socket
这个462的年纪大了,比较萎,硬度不够,"插"不了,插件(plugin)只有5.30版之后才行,俺就戴上套子来当插件用。具体做法请看俺以前发的帖子。这种做法功能是无坚不摧,但不方便维护。
2、#url指令
自己在本机弄一个webserver,462通过#url发送命令,webserver收到后做相应的处理再把结果写入#url中约定的文件名,462再通过#read把处理结果读出来。这种做法绕了弯子搞,看着都累。
3、dde
python版ddeserver:
---------------------------------------------------
#-*- coding:cp936 -*-
import win32ui
from pywin.mfc import object
import dde
from time import sleep
class muddde(object.Object):
    def __init__(self, topicName):
        topic = dde.CreateTopic(topicName)
        topic.AddItem(dde.CreateStringItem(""))
        object.Object.__init__(self, topic)

class call_func(muddde):
    def Request(self, input):
        #input就是zmud传过来的参数
        #这里可以放任何您需要的代码
        return "you send me:%s" %input
server = dde.CreateServer()
server.AddTopic(call_func("func"))
server.Create('python')

print "DDE服务启动完毕......"
while 1:
    win32ui.PumpWaitingMessages(0, -1)
    sleep(0.001)
------------------------------------------------------------
在zmud中:dde("python","func","ooxx")就是以参数"ooxx"调用call_func的Request函数,任何zmud做不了或速度不够的操作都可以在Request()中完成。当然,类似call_func的可以有多个,每个对应一个函数供调用。
这种做法证明了python很好,很强大。
4、dde+com
dde是个老掉牙的家伙了,现在比较流行的是com,象nt3中mushclient就是使用了com来调用mapper.exe,整体效率很高,搞得462很没面子(tnnd,调mapper.exe这种外挂级的东西算不算作弊啊?封杀封杀),不过,python也是bug级的,dde+com如下:
-------------------------------------------------------------------
#-*- coding:cp936 -*-
import win32ui
from pywin.mfc import object
import dde
from time import sleep
import win32com.client
o = win32com.client.Dispatch("mapper.path")

class muddde(object.Object):
    def __init__(self, topicName):
        topic = dde.CreateTopic(topicName)
        topic.AddItem(dde.CreateStringItem(""))
        object.Object.__init__(self, topic)

class call_func(muddde):
    def Request(self, input):
        ret=""
        o.getroom(1)
        ret+="getroom(1)="+o.result.encode("cp936")
        o.getidfrname("武庙")
        ret+="/n"+"getidfrname(武庙)="+o.result.encode("cp936")
        o.search(1,25,"mr")
        ret+="/n"+"search(1,25,mr)="+o.result.encode("cp936")
        o.getareapath(0, 2)
        ret+="/n"+"getareapath(0, 2)="+o.result.encode("cp936")
        o.getrmid("武庙|e|u|w")
        ret+="/n"+"getrmid(武庙)="+o.result.encode("cp936")
        return ret
server = dde.CreateServer()
server.AddTopic(call_func("request"))
server.Create('python')

print "DDE服务启动完毕......"
while 1:
    win32ui.PumpWaitingMessages(0, -1)
    sleep(0.001)
------------------------------------------------------------------
在zmud中:dde("python","func","ooxx")就可以调用mapper.exe的各接口函数。
这种做法证明了python很黄,很暴力。
5、纯python完成mapper.exe的功能
这和462无关,改天再写了

后记:2007年11月初,俺遭遇到人生一大麻烦,头大如斗,泪别泥潭多日,今天才有机会来冒个泡.....以后恐怕也难常来了,可怜俺的ID,神功未成半途而废,poor
 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值