使用EnumWindows() Windows API 函数。它将为屏幕上的所有顶级窗口调用传递给它的应用程序定义的回调函数参数,并将每个窗口的句柄传递给它,直到回调返回FALSE。
这是我编写的一个简单的 Python 2.x 控制台程序,它使用该函数(以及其他一些函数来确定哪些窗口实际上可能在桌面上可见——许多枚举的“顶级”窗口是EnumWindows()不可见的——以完成你想要的。它利用PyWin32win32gui扩展包中包含的模块来访问 Windows API。这也可以使用内置模块在更低、更直接的级别上完成,但 PyWin32 是一个更IMO,先进且方便的方法。ctypes
Tkinter您可以将输出重定向到文本文件,或者可以修改程序以使用几个不同的可用 GUI 模块(包括名为 的 tk/tcl 接口模块,它是该语言的标准配置)在窗口或对话框中显示列表。
import sys
import win32gui
def callback(hwnd, strings):
if win32gui.IsWindowVisible(hwnd):
window_title = win32gui.GetWindowText(hwnd)
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
if window_title and right-left and bottom-top:
strings.append('0x{:08x}: "{}"'.format(hwnd, window_title))
return True
def main():
win_list = [] # list of strings containing win handles and window titles
win32gui.EnumWindows(callback, win_list) # populate list
for window in win_list: # print results
print window
sys.exit(0)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)