确定窗口是否在最顶层

时间:2016-04-30 08:25:53

标签: c# pinvoke

我可以将窗口位置设置为最顶层,并且使用SetWindowPos将其设置为最顶层。但我无法弄清楚如何检查窗口是否是最顶层的。是否有任何方法可以检查窗口是否位于最顶层或没有pinvoke?

2 个答案:

答案 0 :(得分:2)

您可以使用GetWindowLong()功能检查Extended Window Styles

未经测试,但我相信它应该有效:

[DllImport("user32.dll", SetLastError=true)]
static extern int GetWindowLong(IntPtr hWnd, int nIndex);

const int GWL_EXSTYLE = -20;
const int WS_EX_TOPMOST = 0x0008;

public static bool IsWindowTopMost(IntPtr hWnd)
{
    int exStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
    return (exStyle & WS_EX_TOPMOST) == WS_EX_TOPMOST;
}

答案 1 :(得分:0)

根据您使用的UI技术,您可以选择以下两项:

您可以使用这些属性来检查某个窗口是否位于最顶层,您也可以使用这些属性来设置最顶层的窗口。我更喜欢这些支持任何win32方法。