Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 C# 中,我想获取特定程序的所有活动窗口句柄。
例如,我想获取 Outlook 客户端和所有 Outlook 打开的邮件窗口。可能会打开 2/3/etc 邮件窗口。我不能使用活动窗口标题来获得某种关系,因为它可能完全不同。
我可以使用 EnumWindows、IsWindowVisible 来获取所有打开的窗口的列表。子窗口或窗口组(即与 Outlook 相关的所有窗口、与 Skype 相关的所有窗口等)之间是否存在任何关系?
谢谢。
在这种情况下,您需要使用 WinAPI。 首先,每个窗口都与一个所有者进程相关联 - 使用 GetWindowThreadProcessId。 其次,所有窗口都有父/子关系——使用 EnumChildWindows 和 GetParent。