0
我想寫一個方法,它需要窗口句柄列表並返回具有最高z指數的窗口的句柄等。但徒勞無益。有人可以給我一個建議如何做到這一點?獲取頂部窗口句柄(按Z索引排序窗口)
我想寫一個方法,它需要窗口句柄列表並返回具有最高z指數的窗口的句柄等。但徒勞無益。有人可以給我一個建議如何做到這一點?獲取頂部窗口句柄(按Z索引排序窗口)
我會幫你出:
[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
}
private IntPtr GetTopmostHwnd(List<IntPtr> hwnds)
{
var topmostHwnd = IntPtr.Zero;
if (hwnds != null && hwnds.Count > 0)
{
var hwnd = hwnds[0];
while (hwnd != IntPtr.Zero)
{
if (hwnds.Contains(hwnd))
{
topmostHwnd = hwnd;
}
hwnd = GetWindow(hwnd, GetWindow_Cmd.GW_HWNDPREV);
}
}
return topmostHwnd;
}
謝謝賈森。這對我來說很有用。最近我注意到,通過調用EnumWindows()獲得的窗口句柄已經按該順序排序:D無論如何感謝。 – 2014-11-22 09:03:26
很模糊。任意地,取出列表中的第一個窗口並調用GetWindow(),傳遞GHWND_PREV。檢查它是否在列表中。重複,直到GetWindow()返回null。 – 2014-11-21 17:39:15