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();
}
目的是让程序即使显示桌面了, 还要显示在最上面
我的思路是有个定时器, 如果发现被其它程序遮挡后, 重新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();
}