我运行以下脚本以确定某个进程是否有可见窗口:
import win32gui
import win32process
pid = 6324
def WindowIsVisible(pid):
data = [pid, False]
win32gui.EnumWindows(enumHandler, data)
return data[1]
def enumHandler(hwnd, data):
if win32process.GetWindowThreadProcessId(hwnd)[1] == data[0] and win32gui.IsWindowVisible(hwnd):
data[1] = True
if WindowIsVisible(pid):
print "has visible window"
else:
print "does not have visible window"
由于某些原因,它打印has visible window
但是,我的任务栏和任务管理器是这样的:
怎么可能?outlookexe绝对不可见(尽管它在通知图标区域可见)
IsWindowVisible
返回{win32gui.IsIconic()
测试最小化的窗口。在Outlook也完全有可能有多个顶级窗口,正如您在上一个问题中所述。您的方法将检测这些窗口是否具有visible属性。在
你的代码看起来也很奇怪。给一个名为
WindowIsVisible
的函数传递一个PID对我来说是错误的。这是一个你会问一个窗口而不是一个过程的问题。在我认为这一准则更适合您的需要:
但是,这仍将枚举所有顶级窗口。我想你真正需要的是Outlook主窗口。我想你得想办法找出那扇窗户。在
相关问题 更多 >
编程相关推荐