Form设置Topmost属性, 执行显示桌面后, 可以被其它程序遮挡。如何判断小弟我原来的窗体还在整个Windows的最上面

Form设置Topmost属性, 执行显示桌面后, 可以被其它程序遮挡。怎么判断我原来的窗体还在整个Windows的最上面?
目的是让程序即使显示桌面了, 还要显示在最上面

我的思路是有个定时器, 如果发现被其它程序遮挡后, 重新Activate一下。 从而即使执行显示桌面的操作,还是可以保证我的窗体在最上面。


问题是我怎么判断我的程序被其它程序遮挡?

或者有其它更好的方法?
------解决方案--------------------
        [DllImport("user32.dll")]// 获取桌面上显示最前的窗口句柄
        public static extern IntPtr GetForegroundWindow();

        [DllImport("user32.dll")]
        public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
        public static string GetWindowText(IntPtr hwnd)
        {
            StringBuilder title = new StringBuilder(256);
            GetWindowText(hwnd, title, title.Capacity);
            return title.ToString();
        }