在DDE事件上,我的程序加载了一个文件,并且应该弹出到前台。 我正在使用

show;

当我隐藏窗口时,似乎只是像那样工作。

所以我添加了

bringtofront;

如果它被隐藏,关闭,最小化或者放在图标托盘中,这又有效,但如果它在另一个窗口下打开则不行。

我甚至尝试了一些像

这样的hacky东西
windowstate:=wsminimized;
windowstate:=wsnormal;

尝试强制显示,但无济于事。我知道代码正在运行,因为我在这个块的任何一侧都有打印输出,并且没有条件语句可能会被卡住。

有帮助吗?

解决方案

您是否尝试过 SetForegroundWindow 和/还是SetActiveWindow?另请参阅有关此主题的 MSDN信息

其他提示

SetForegroundWindow并不总是有效。事实上,这些天它不太可能工作,因为应用程序不应该抓住焦点,它们只能放弃它。 MS一直在尝试以防止应用程序窃取输入焦点。阅读Raymond Chen对此博客文章的评论对于某些历史。

所以,如果你自己是前台应用程序,你可以将SetForegroundWindow改为另一个应用程序,一切都将是桃色的。如果您不是前台应用程序,则唯一可能发生的事情是任务栏按钮将开始闪烁。

只是为了增加一些混淆,精确的行为依赖于Windows版本,所以会发生什么取决于你正在运行的Windows版本 - 他们长期以来一直在搞乱这个问题: - )。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top