大力丸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
据俺所知,扩展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