如何通过窗口句柄确定它是否为弹出式C#

时间:2018-08-16 19:49:44

标签: c# winapi

迭代打开的任何窗口并在环境上具有最高的z顺序,如何验证窗口没有弹出(工具提示弹出,组合弹出等)?

使用WinApi方法:

HWND WINAPI GetWindow(
  _In_ HWND hWnd,
  _In_ UINT uCmd
);


for (IntPtr childWindow = WinAPI.GetWindow(WinAPI.GetDesktopWindow(), WinAPI.GetWindow_Cmd.GW_CHILD);
                childWindow != IntPtr.Zero;
                childWindow = WinAPI.GetWindow(childWindow, WinAPI.GetWindow_Cmd.GW_HWNDNEXT))
{
     //todo if
}

1 个答案:

答案 0 :(得分:0)

感谢所有发表评论的人,您使我找到了解决方案。这是我用Spy ++进行测试的方法。

如果您有一些建议/想法,我将不胜感激。

    public const long WS_POPUP = 0x80000000L;
    public static bool IsWindowPopup(IntPtr hHandle)
    {
        long style = WinAPI.GetWindowLongPtr(hHandle, -16);
        bool isPopup = ((style & WS_POPUP) != 0);
        return isPopup;
    }