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()

 

你可能感兴趣的:(python,python小项目)