窗體的顯示和隱藏
#!/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)