窗体的显示和隐藏
#!/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)