是否有可能在.Net(或通过pinvoke)确定窗体是否被遮挡视线(即其他窗户已被移动到其上方,因此无法看到)?我正在做的是检查表单是否最小化,然后闪烁任务栏上的窗口(如果是)。但问题是如果它没有最小化,但只是移动到后台,我还想通过闪烁任务栏上的窗口来通知用户。我不想自动将窗口移动到前台(即使没有激活)。我希望他们点击它以最大化和/或显示表单。想法?
以下是一些代码:
// See if we already have a conversation going with this person var frm = theApp.GetConversationByUID(fromuid); if (frm == null) { frm = theApp.NewConversation(fromuid, fromname); } else { bool withinView = frm.WindowState != FormWindowState.Minimized; if (withinView) { // Determine if window is just obstructed //TODO } // If the conversation window is not within view, then flash it if (!withinView) { FlashWindow.Flash(frm); } }