当前位置:   article > 正文

win32gui激活、关闭窗口方法_win32gui.findwindow

win32gui.findwindow

win32gui模块可以控制窗口的属性,如果想激活某个窗口,一般先获取这个窗口的名字,如下代码可以打印出目前系统开启的所以程序窗口及名称:

import win32gui,win32com.client
def get_hwnd_dic(hwnd, hwnd_title):
    if (win32gui.IsWindow(hwnd)
            and win32gui.IsWindowEnabled(hwnd)
            and win32gui.IsWindowVisible(hwnd)
            and win32gui.GetWindowText(hwnd)):
        hwnd_title[f"{hwnd}"] = win32gui.GetWindowText(hwnd)
def get_hwnd():
    """
    :return: {hwnd:title}
    """
    hwnd_title = {}
    win32gui.EnumWindows(get_hwnd_dic, hwnd_title)
    return hwnd_title
#获取所有窗口句柄
hwndJson = get_hwnd()
print(hwndJson)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

找到我们要的窗口名称后,我们用FindWindow方法获取句柄,handle为上面查到的名称:

hwnd= win32gui.FindWindow(None, handle)
  • 1

接下来把这个窗口置顶显示,有一个需要关注的问题,如果之前有对窗口坐标进行计算,一定要在激活后重新计算,否则会有bug,此时顶点坐标为-32000。

shell = win32com.client.Dispatch("WScript.Shell")
#先发送一个alt key事件
shell.SendKeys('%')
# 设置为当前活动窗口
win32gui.SendMessage(hwnd, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0)
win32gui.SetForegroundWindow(hwnd)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

关闭窗口这样写:

hwnd= win32gui.FindWindow(0,hwnd_name)
win32gui.PostMessage(hwnd,win32con.WM_CLOSE,0,0)
  • 1
  • 2

有时候我们希望最小化窗口而不是关闭它,可以使用如下命令

hwnd= win32gui.FindWindow(0,hwnd_name)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)#最小化
  • 1
  • 2

除此之外,我们还可以利用win32com.client模块执行Excel里面的VBA:

import win32com.client as win32
def run_vba(vba,filename):
    #制作全天单量
    excel = win32.Dispatch('Excel.Application') #需要安装Excel
    excel.Visible = True   
    wb = excel.Workbooks.Open(filename) #文件路径,打开指定excel文件
    excel.Application.Run(vba)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以上为win32gui常见窗口操作方法,对你有用的话欢迎点赞收藏哦。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/109252
推荐阅读
相关标签
  

闽ICP备14008679号