python为所欲为系列-制作游戏脚本

在游戏脚本制作方面,大家常常听说易语言、TC、按键精灵,可惜知python者甚少。

而本菜鸟就是这么钟爱python,那还能咋滴,花点时间研究研究python怎么为所欲为呗。

经过几天的努力,终究还是黄天不负有心人。python的快速制作gui界面问题解决,线程问题解决,热键注册问题解决

甚至,能够拿市场上较为牛逼的插件来用,又是手到擒来。我怎么甘心就一个大漠插件完事儿?

 

这不,经过个人的不懈努力,大漠插件,乐玩插件,甚至我还能直接把易语言用了模块编写的功能编译成dll直接给

python用。这下万事俱备,python也能为所欲为啦!

调用易语言直接编译的dll文件系列,直接上代码,本菜鸟准备后面把精易模块等好东西,造个python轮子出来:

下面这个代码是基础的底层知识支撑,弄明白了,就随便拿别人的dll玩,哈哈。最后,demo文件包含

一个py文件,一个编译好的dll文件以及与它对应的易语言源码程序在最下面。

#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
# File  : dlltypes.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date  : 2019/5/18

from ctypes import WinDLL
from ctypes import c_bool,c_int,c_float,c_double,c_char_p




class types:
    def __init__(self,dllfile):
        self.dll = WinDLL(dllfile)
        self.bool = c_bool
        self.int =  c_int
        self.float = c_float
        self.double = c_double
        self.str = c_char_p
    def load(self,dllfile):
        self.dll = WinDLL(dllfile)

    #########输入参数值转换###########################
    def cin2bool(self,text):
        self.back = self.bool(bytes(text,'gbk'))
        return self.back
    def cin2int(self,text):
        self.back = self.int(text)
        return self.back
    def cin2float(self,text):
        self.back = self.float(text)
        return self.back
    def cin2double(self,text):
        self.back = self.double(text)
        return self.back
    def cin2str(self,text):
        self.back = self.str(bytes(text, 'gbk'))
        return self.back

    #########输出返回值转换###########################
    def cout2bool(self,func):
        func.restype = self.bool
    def cout2int(self,func):
        func.restype = self.int
    def cout2float(self, func):
        func.restype = self.float
    def cout2double(self, func):
        func.restype = self.float
    def cout2str(self, func):
        func.restype = self.str

    #########调用windll测试程序###########################
    def findwindow(self,title):
        self.back = self.cin2str(title) #将Windll内findwindow函数的输入类型转为str型
        self.cout2int(self.dll.findwindow)# 将Windll内findwindow函数的输出返回类型转为bool型
        self.back = self.dll.findwindow(self.back)
        return self.back


    def string(self,text):
        self.back = self.cin2str(text)#得到一个c_char_p(56136880)类型的指针
        self.cout2str(self.dll.str)#设置windll内部str函数输出返回值类型为str型
        self.back = self.dll.str(self.back).decode('gbk') #用于接收该返回值
        return self.back
    def booling(self,text):
        if isinstance(text,str):
            self.back = self.cin2bool(text)#得到一个c_char_p(56136880)类型的指针
        else:
            self.back = self.bool(bytes(text))
        self.cout2bool(self.dll.bool)#设置windll内部str函数输出返回值类型为str型
        self.back = self.dll.bool(self.back) #用于接收该返回值
        return self.back
    def inting(self,text):
        if isinstance(text, str):
            text = int(text)
        self.back = self.cin2int(text)
        self.cout2int(self.dll.int)#设置windll内部str函数输出返回值类型为str型
        self.back = self.dll.int(self.back) #用于接收该返回值
        return self.back
    def floating(self,text):
        if isinstance(text, str):
            text = float(text)
        self.back = self.cin2float(text)
        self.cout2float(self.dll.float)#设置windll内部str函数输出返回值类型为str型
        self.back = self.dll.float(self.back) #用于接收该返回值
        return self.back
    def doubleing(self,text):
        self.back = self.cin2double(text)
        self.cout2double(self.dll.double)#设置windll内部str函数输出返回值类型为str型
        self.back = self.dll.double(self.back) #用于接收该返回值
        return self.back
    def open(self,index = 1):
        self.dll.open(index)
    def add(self,a=1,b=2):
        self.back = self.dll.add(a,b)
        return self.back
    def init(self):
        self.dll.init()

if __name__ == '__main__':
    lw = types("leidian.dll")
    ret = lw.findwindow("记事本")
    print(ret)
    ret = lw.string("技术")
    print(ret)
    ret = lw.booling('0')
    print(ret)
    ret = lw.inting('2')
    print(ret)
    ret = lw.floating(2.56)
    print(ret)
    ret = lw.doubleing(2.56)
    print(ret)
    ret = lw.add(1,5)
    print(ret)
    lw.init()

 

  • 14
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值