zoukankan      html  css  js  c++  java
  • python1.2-----pywin32模块/语音合成,窗口闪烁以及修改游戏数据的技巧

    在使用这些技巧前,需要下载模块:pywin32 ,可以在cmd窗口输入:pip install pywin32进行下载

    语音合成:
    import win32com.client   #系统的客户端模块,win32com.client 模块在pywin32下载后就可以引入了。
    dehua=win32com.client.Dispatch('SAPI.SPVOICE')
    dehua.Speak('翻译成语音的文本')

    窗口闪烁:

    #窗口闪烁的前提是会操纵窗口,操纵窗口的软件可以下载my spy.exe,进入myspy.exe,将右边的图标拖到窗口的位置获取窗口的信息。只需要找到标题和类即可.

    #操纵窗口

    import win32con
    import win32gui    #在安装pywin32后即可使用这两个模块
    #找到窗口
    QQWin=win32gui.FindWindow('窗口的类名','窗口的标题名')
    #隐藏窗口
    win32gui.ShowWindow(QQWin,win32con.SW_HIDE)
    #显示窗体
    win32gui.ShowWindow(QQWin,win32con.SW_SHOW)


    #一个使打开的窗体持续闪烁的程序:(在打开一个窗口前,执行该程序,当打开一个窗口后,窗口会持续闪烁)
    import win32con
    import win32gui
    import time
    while 1:
      QQWin=win32gui.FindWindow('窗口的类名','窗口的标题名')   #QQWin就是操纵的窗口
      win32gui.ShowWindow(QQWin,win32con.SW_HIDE)   #令窗口隐藏
      time.sleep(1)    #隐藏1秒
      win32gui.ShowWindow(QQWin,win32con.SW_SHOW)#令槽口出现
      time.sleep(1)     #现身一秒


    2.控制窗体的位置和大小
    #参数1:控制的窗体
    #参数2:大致方位,HWND_TOPMOST上方
    #参数3:位置x
    #参数4:位置y
    #参数5:窗体的长度
    #参数6:窗体的宽度

    控制窗口随机移动:
    while 1: 
      x=random.randrange(900)
      y=random.randrange(600)
      win32gui.SetWindowPos('窗体名',win32con.HWND_TOPMOST,x,y,300,300,win32con.SWP_SHOWWINDOW)

     


    游戏数据修改:

    在修改游戏数据前需要下载CE修改器之类的内存修改器
    #进程模块
    import win32process : #进程模块
    import win32con
    import win32gui #窗口
    import win32api
    import ctypes #做一些c语言的类型转换

     

    #最高权限:
    PROCESS_ALL_ACCESS=(0x00F00000|0x00100000|0xFFF)
    #找窗体:
    win=win32gui.FindWindow('窗口的类名','窗口的标题名')
    #根据窗体找进程号:
    hid,pid=win32process.GetWindowThreadProcessId(win)
    #以最高权限打开进程:
    p=win32api.OpenProcess(PROCESS_ALL_ACCESS,False,pid)#p为打开的进程

    md=ctypes.windll.LoadLibrary(r'C:WindowsSystem32kernel32') #加载内核模块
    data=ctypes.c_long()
    #读取内存
    md.ReadProcessMemory(int(p),0x用内存软件找到的相应的内存地址,ctypes.byref(data),4,None) #把内存里面的值拿出到data里面

    newData=cytpes.c_long(10000)#新值
    md.WriteProcessMemory(int(p),用内存软件找到的相应的内存地址,ctypes.byref(newData),4,None) #修改,4表示写4个字节。

    例如:#本人用此方法修改植物大战僵尸的能量值,直接改成666
    import win32process
    import win32con
    import win32api
    import win32gui
    import ctypes
    PROCESS_ALL_ACCESS=(0x000F0000|0x00100000|0xFFF)
    win=win32gui.FindWindow('MainWindow','Plants vs. Zombies')
    hid,pid=win32process.GetWindowThreadProcessId(win)
    p=win32api.OpenProcess(PROCESS_ALL_ACCESS,False,pid)
    md=ctypes.windll.LoadLibrary(r'C:WindowsSystem32kernel32')
    data=ctypes.c_long()
    md.ReadProcessMemory(int(p),0x14E2C268,ctypes.byref(data),4,None)
    newData=ctypes.c_long(666)#新值
    md.WriteProcessMemory(int(p),0x14E2C268,ctypes.byref(newData),4,None)

    修改游戏数据更简便的方法:在ce修改器里面直接找到相关内存,右键修改内存数据即可。

     

  • 相关阅读:
    【学习笔记】【C语言】递归
    【学习笔记】【C语言】static和extern对变量的作用
    【学习笔记】【C语言】static和extern对函数的作用
    【学习笔记】【C语言】typedef
    【学习笔记】【C语言】文件的包含
    【学习笔记】【C语言】条件编译
    【学习笔记】【C语言】宏定义
    【学习笔记】【C语言】枚举
    【学习笔记】【C语言】结构体的嵌套
    【学习笔记】【C语言】结构体和函数
  • 原文地址:https://www.cnblogs.com/yulianggo/p/9207689.html
Copyright © 2011-2022 走看看