窗体的显示和隐藏

#!/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)

 

python控制电脑并口 python控制程序窗口_python

 

 

 让窗体满屏幕乱跑

#!/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)