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")