python获取窗口句柄并将指定应用置顶

import win32gui
import win32con
#获取所有窗口句柄
hwnd_title = {}

def get_all_hwnd(hwnd, mouse):
    if (win32gui.IsWindow(hwnd)
            and win32gui.IsWindowEnabled(hwnd)
            and win32gui.IsWindowVisible(hwnd)):
        hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})


win32gui.EnumWindows(get_all_hwnd, 0)
for h, t in hwnd_title.items():
    if t :
        print (h, t)
#置顶窗口
print("置顶窗口")
hwnd = win32gui.FindWindow(None, "博客后台 - 博客园 - Google Chrome")
# hwnd = win32gui.FindWindow('xx.exe', None)
# 窗口需要正常大小且在后台,不能最小化
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
# 窗口需要最大化且在后台,不能最小化
# ctypes.windll.user32.ShowWindow(hwnd, 3)
win32gui.SetForegroundWindow(hwnd)


if __name__ == '__main__':
    pass

 上边这个将窗口置顶后如果点了其他地方,窗口将会取消置顶;

下边的是将窗口置顶后点了其他地方,也不会取消置顶

    def get_all_hwnd(hwnd, mouse):
        if (win32gui.IsWindow(hwnd)
                and win32gui.IsWindowEnabled(hwnd)
                and win32gui.IsWindowVisible(hwnd)):
            AC_cycle_uefi.hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})

    
    def set_KVM_window_top():
        try:
            win32gui.EnumWindows(AC_cycle_uefi.get_all_hwnd, 0)
            handle=""
            for h, t in AC_cycle_uefi.hwnd_title.items():
                if t:
                    if "KVM Console" in t:
                        handle =  t
                        logger.write("{} {}".format(h,t))
            # 置顶窗口
            logger.write("Set window on the top",handle)
            hwnd = win32gui.FindWindow(None, handle)
            # hwnd = win32gui.FindWindow('xx.exe', None)
            # 窗口需要正常大小且在后台,不能最小化
            win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
            # 窗口需要最大化且在后台,不能最小化
            # ctypes.windll.user32.ShowWindow(hwnd, 3)
            # win32gui.SetForegroundWindow(hwnd)
            #
            # win32gui.SetActiveWindow(hwnd)
            # win32gui.SetForegroundWindow(hwnd)
            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)


        except Exception as e:
            logger.write("Set window top fail")

 

 

posted @ 2020-10-10 22:30  腹肌猿  阅读(5419)  评论(0编辑  收藏  举报