关于python:win32设置当前窗口SetForegroundWindowSetActiveWindow-or-ShowWindow

85次阅读

共计 664 个字符,预计需要花费 2 分钟才能阅读完成。

win32 的函数泛滥,又比拟底层,名字就不太好了解,比方这三个:SetForegroundWindowSetActiveWindow, 和 ShowWindow,到底谁能力把指定窗口变成以后窗口呢?

首先要廓清的就是:

SetActiveWindow 不行

它就不是设计来做这个的——尽管名字里也有 Window,但针对的其实是控件,也就是顶级窗口的子窗口(windows 里,什么都形象成窗口了)。它的作用,简略说就是把一个控件设置为能够接管键盘输入。

那么剩下两个呢?

SetForegroundWindow vs ShowWindow

SetForegroundWindow

把一个被盖住的窗口(后盾窗口,但没有最小化),搁置到最前

ShowWindow

把一个最小化的窗口复原,并且搁置到最前(如果该窗口原本没有最小化,那就不会产生变动)

所以,同时适应两种状况的代码如下:

import win32con
import win32gui

def set_current_window(hwnd):
    if win32gui.IsIconic(hwnd):
        win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
    else:
        win32gui.SetForegroundWindow(hwnd)

留神 :判断一个窗口是否最小化的办法,叫做 IsIconic,十分奇怪,怎么看怎么像是“是否缩成状态栏图标”,然而它就是“是否最小化”的函数。我猜可能是因为函数库十分“古老”,过后 windows 还没有状态栏图标呢,任务栏最小化就能够称为 Iconic。

正文完
 0