0

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

4

2 回答 2

1

你可以试试这个 pinvoke 调用:

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

并将其用作参数

uint GW_HWNDNEXT = 2; 

因此,首先获取顶部窗口(或您的)。之后调用 GetNextWindow 并一次又一次地处理结果,......所以你会得到所有的窗口

于 2012-08-10T06:27:05.950 回答
0

您可以使用该函数获取下一个或上一个窗口(z 顺序)GetNextWindow

编辑:我刚刚在 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
}
于 2012-08-10T06:26:20.980 回答