窗体的显示和隐藏
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import win32con import win32gui # 以qq为例子 qqWin = win32gui.FindWindow("TXGuifoundation", "QQ") # 接收两个参数,一个是程序的类,一个是标题.目的是找到窗体 # 然后让窗体显示出来 win32gui.ShowWindow(qqWin, win32con.SW_SHOW) # 也可以让窗体消失 win32gui.ShowWindow(qqWin, win32con.SW_HIDE)
控制窗体的位置和大小
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import win32gui import win32con qqWin = win32gui.FindWindow("TXGuiFoundation", "QQ") # 主要要接收如下参数 # 参数一:控制的窗体 # 参数二:大致方位:HWND_TOPMOST,位于上方 # 参数三:位置x # 参数四:位置y # 参数五:长度 # 参数六:宽度 # 参数七:比较固定,就是让窗体一直显示 win32gui.SetWindowPos(qqWin, win32con.HWND_TOPMOST, 100, 100, 300, 300, win32con.SWP_SHOWWINDOW)
让窗体满屏幕乱跑
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import win32gui import win32con import random qqWin = win32gui.FindWindow("TXGuiFoundation", "QQ") # 将位置变成随机数 while True: x = random.randint(1, 800) y = random.randint(1, 400) win32gui.SetWindowPos(qqWin, win32con.HWND_TOPMOST, x, y, 300, 300, win32con.SWP_SHOWWINDOW)
语音合成
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import win32com.client speaker = win32com.client.Dispatch("SAPI.SpVoice") speaker.Speak("satori,i love you ")
内存修改
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import win32process import win32gui import win32api import ctypes # 打开进程要以管理员的方式,才能修改 PROCESS_ALL_ACCESS = (0X000F0000 | 0x00100000 | 0xFFF) # 找窗体 qqWin = win32gui.FindWindow("TXGuiFoundation", "QQ") # 根据窗体找到进程号 hid, pid = win32process.GetWindowThreadProcessId(qqWin) # 以最高权限打开进程 p = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, pid) # # data = ctypes.c_long() # 加载内核模块 md = ctypes.windll.LoadLibrary(r"c:\windows\system32\kernel32") # 参数为空,因此data负责保存信息 data = ctypes.c_long() # 读取内存 # 接收三个参数 # 参数一:上面的p,打开进行之后的返回值 # 参数二:内存地址 # 参数三:ctypes.byref(data),表示把数据放在data里 # 参数四:读多少个字节 # 参数五:错误信息 md.ReadProcessMemory(int(p), 311944712, ctypes.byref(data), 4, None) print("data=", data) # 新值 # 因此最终再把参数里的值写入内存中,从而达到修改的效果 newData = ctypes.c_long(10000) # 将值再写进去 # 上一个Data,c_long()参数为空,负责接收数据 # 现在的newData,c_long(10000)参数有值,负责把值写进去 md.WriteProcessMemory(int(p), 311944712, ctypes.byref(newData), 4, None)