什么可以阻止窗口显示在前台?

时间:2014-05-13 06:15:03

标签: winapi modal-dialog showwindow setforegroundwindow

在某些情况下,什么可以阻止对话框在前台以模态方式显示?

进程(KeePass.exe)拥有一个隐藏窗口。全局快捷方式(CTRL + A)在前景中显示对话框。这是使用DoModal方法完成的。它有效。

但是,在某些我不知道的情况下,会发生以下情况:窗口出现在任务栏中,只有在点击它之后,才会显示。我为KeePass创建了一个插件,它会覆盖WndProc并等待某个WM_COPYDATA消息。如果此消息到达,则使用DoModal显示该对话框。但是,在这种情况下,它仅显示在任务栏中,而不显示在前台。

WM_COPYDATA消息是从不同的进程发送的,但这不重要吗?可能是什么原因?

我在这方面挣扎了这么久,这很奇怪,甚至很难解释这个问题。

我尝试在显示对话框之前发出SetForegroundWindow(hKeePassWindow)但没有更改。

0 个答案:

没有答案