python--控制窗體


窗體的顯示和隱藏

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM