gpt4 book ai didi

c# - 获取 C# 中实际可见的进程/窗口

转载 作者:行者123 更新时间:2023-12-02 16:21:01 27 4
gpt4 key购买 nike

我有所有打开的窗口的列表,即窗口任务栏中的窗口。我想要做的是删除列表中不可见的那些。

我的意思是,如果一个窗口被另一个窗口隐藏,它不应该出现在我的列表中。

这两天我一直在谷歌搜索,但没有成功......

有什么想法吗?

PS:我可以获取每个进程的位置和大小,因此获取进程的上次使用时间/空闲时间也可以...

最佳答案

您需要使用区域,窗口中仍然可见的可以是一组复杂的矩形。从要检查的窗口开始,GetWindowRect 和 CreateRectRegion 为窗口矩形创建一个区域。

循环调用GetWindow(),传递GW_HWNDPREV。它返回 Z 顺序中的前一个窗口,以便它可以重叠。 GetWindowRect() 获取其矩形,CreateRectRegion() 并将其与原始窗口区域使用合并 Rgn() 和 RGN_DIFF 进行组合。

当 GetWindow 返回 NULL 时,您已找到所有可能重叠的窗口。使用 GetRgnBox 检查该区域是否还有剩余内容。如果存在,则至少窗口的一部分没有重叠。

关于c# - 获取 C# 中实际可见的进程/窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com