通过python控制windows窗口的关闭和显示

代码:

import win32gui, win32con, win32api
import os,sys,re
import ctypes
import time


def showWindow(hwnd):
    # 展示窗口,以下几行代码都可以唤醒窗口
    win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
    win32gui.ShowWindow(hwnd, win32con.SW_SHOWNA)
    win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
    win32gui.ShowWindow(hwnd, win32con.SW_SHOWDEFAULT)
    

def hideWindow(hwnd):
    #最小化
    win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
    
def closeWindow(hwnd):
    # 关闭窗口,以下代码等价
    #win32gui.CloseWindow(hwnd)
    win32gui.PostMessage(hwnd,win32con.WM_CLOSE,0,0)
    
def getFrontWindow():
    # 获取当前置顶的窗口
    top_hwnd = win32gui.GetForegroundWindow()
    return top_hwnd
    
def setFrontWindow(hwnd):
    # 置顶窗口
    win32gui.SetForegroundWindow(hwnd)

def setWindowPosition(hwnd, x, y, w, h):
    #调整目标窗口到坐标(600,300),大小设置为(600,600)
    win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, x,y,w,h, win32con.SWP_SHOWWINDOW)

def getHwndInfo(hwnd):
    info = {}
    info['hwnd'] = hwnd
    info['hex'] = hex(hwnd)
    info['classname'] = win32gui.GetClassName(hwnd)
    info['title'] = win32gui.GetWindowText(hwnd)
    info['childs'] = []
    return info

def printinfo(hwnd):
    print('%s %s %s %s 主程序' % (str(hwnd['hwnd']), hwnd['hex'], hwnd['classname'], hwnd['title']))

def closeprintinfo(hwnd):
    print('%s %s %s %s 主程序 关闭...' % (str(hwnd['hwnd']), hwnd['hex'], hwnd['classname'], hwnd['title']))

#TrayNotifyWnd 任务栏右边托盘图标
if __name__ == '__main__':
    while True:
        print('开始执行')
        hwndlist = []
        hwndInfoList = []
        win32gui.EnumWindows(lambda hwnd, param: param.append(hwnd), hwndlist)
        for hwnd in hwndlist:
            info = getHwndInfo(hwnd)
            hwndInfoList.append(info)
            
        hidelist = []
        for i in hwndInfoList:
            if i['title'] == '微信':
                printinfo(i)
                if i['classname'] == 'Chrome_WidgetWin_0':
                    hidelist.append(i)
        
        
        for i in hidelist:
            closeprintinfo(i)
            i['hwnd'] = int(i['hwnd'])
            #showWindow(i['hwnd'])
            hideWindow(i['hwnd'])
            closeWindow(i['hwnd'])
            
        
        time.sleep(3)
        print('执行完毕')
        print()

 

我这个是每隔3秒去关闭一下微信视频号的代码,

可以改造出一个配置文件,格式如:

微信:Chrome_WidgetWin_0,Chrome_WidgetWin_1

微信企业版:Chrome_WidgetWin_3,Chrome_WidgetWin_4

 

去控制多种窗口的关闭,家里有淘气小孩,可以试一试

执行日志输出:

开始执行
131502 0x201ae TrayNotifyWnd 微信 主程序
66772 0x104d4 WeChatMainWndForPC 微信 主程序
66792 0x104e8 CefWebViewWnd 微信 主程序
执行完毕

开始执行
131502 0x201ae TrayNotifyWnd 微信 主程序
3802924 0x3a072c Chrome_WidgetWin_0 微信 主程序
66772 0x104d4 WeChatMainWndForPC 微信 主程序
66792 0x104e8 CefWebViewWnd 微信 主程序
3802924 0x3a072c Chrome_WidgetWin_0 微信 主程序 关闭...

 

posted @ 2023-04-06 16:04  河北大学-徐小波  阅读(925)  评论(0编辑  收藏  举报