我们运行的一个应用程序在某些 XP 机器上,当它需要用户注意时,它会弹出到所有其他内容的前面。这是一个实时聊天应用程序,所以我们希望它能做到这一点。
某些 XP 机器会出现这种情况,但其他机器不会。我与开发该软件的公司进行了交谈,他们对此无能为力。所以我认为这是操作系统的问题。因此我在这里发布了这篇文章。
操作系统内(也许是在注册表内)是否有某些东西可以进行更改,以允许应用程序窗口窃取焦点并移到最前面(如果其自己的编程尝试执行此操作)。
答案1
的行为SetForegroundWindow
API 在 Windows 2000 中发生了变化。以前,应用程序可以根据自己的选择“弹出”,但现在却受到限制。
如果确实如此SetForegroundWindow()
(请与软件开发人员核实),您可以尝试SPI_SETFOREGROUNDLOCKTIMEOUT
使用以下方法将参数设置为零SystemParametersInfo
。我不完全确定如何通过修改注册表来做到这一点,而无需实际调用此 API。
请注意,我宁愿避免设置系统范围的参数来使单个应用程序运行良好。这些SetForegroundWindow
限制已经存在很长时间了,因此开发公司应该有足够的时间来对此采取措施。