C# - 获取活动窗口正下方的窗口句柄?

时间:2012-08-10 06:21:19

标签: c# pinvoke

是否有可能以某种方式获取GetForegroundWindow检索到的当前活动窗口下方的窗口句柄,z顺序?换句话说,无论大小和位置如何,窗口都在当前窗口之下。

2 个答案:

答案 0 :(得分:1)

你可以试试这个pinvoke电话:

[DllImport("User32")] extern IntPtr GetTopWindow(IntPtr hWnd); 
[DllImport("User32")] extern IntPtr GetNextWindow(IntPtr hWnd, uint wCmd); 

并将其用作参数

uint GW_HWNDNEXT = 2; 

首先得到顶部窗口(或你的)。之后再次调用GetNextWindow和结果句柄,......所以你将获得所有窗口

答案 1 :(得分:0)

您可以使用GetNextWindow功能获取下一个或上一个窗口(z顺序)。

编辑:我刚在pinvoke.net上看到GetNextWindowGetWindow的宏。所以你不妨直接打电话给GetWindow

来自pinvoke.net的代码:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);

enum GetWindow_Cmd : uint {
    GW_HWNDFIRST = 0,
    GW_HWNDLAST = 1,
    GW_HWNDNEXT = 2,
    GW_HWNDPREV = 3,
    GW_OWNER = 4,
    GW_CHILD = 5,
    GW_ENABLEDPOPUP = 6
}