街角_祝福

导航

窗口置顶程序

代码实现

# coding: utf-8
import win32gui
import win32con
import sys

def main():
    if len(sys.argv) < 2:
        print('请指定窗口名称(尽可能准确)')
        return
    name = sys.argv[1]
    wnds = get_all_windows()
    if not wnds:
        print('枚举窗口失败')
        return
    hwnd = get_wnd_contains(name, wnds)
    if not hwnd:
        print('获取目标窗口失败:', name)
        return
    set_wnd_top(hwnd, True)
    print('目标置顶设置完成')

def get_all_windows():
    def function(handle, argument):
        argument.append(handle)
    argument = []
    win32gui.EnumWindows(function, argument)
    return argument


def set_wnd_top(hwnd, top):
    win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
    if top:
        win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0, 0, 0, 0,
                                  win32con.SWP_NOMOVE | win32con.SWP_NOACTIVATE | win32con.SWP_NOOWNERZORDER | win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE)
    else:
        win32gui.SetWindowPos(hwnd, win32.HWND_NOTOPMOST, 0, 0, 0, 0,win32con.SWP_SHOWWINDOW|win32con.SWP_NOSIZE|win32con.SWP_NOMOVE)


def get_wnd_contains(name, wnds):
    texts = []
    for v in wnds:
        text = win32gui.GetWindowText(v)
        texts.append(text)
        # 当前运行窗口
        if text.find('python ') > 0 and text.find(sys.argv[0]) > 0:
            continue
        if text and text.find(name) >= 0:
            print('获取目标成功:' + text)
            return v
    print('查找窗口失败,请确认是否在以下窗口列表中:', '\n\t'.join(set(texts)))
    return None


if __name__ == '__main__':
    main()

使用方法

python top.py 窗口标题名

其中top.py是保存的代码文件名;窗口标题名可以是标题全程,也可以是一部分,能唯一根据该关键字定位窗口即可。

当找不到目标窗口时,程序会显示当前所有的窗口标题名称。

posted on 2022-07-01 11:05  街角_祝福  阅读(62)  评论(0编辑  收藏  举报