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 감사합니다. –
합니다. 임의로 목록에서 첫 번째 창을 가져 와서 GetWindow()를 호출하고 GHWND_PREV를 전달합니다. 목록에 있는지 확인하십시오. GetWindow()가 null을 반환 할 때까지 반복합니다. –