如果一个应用程序调用并激活另一个应用程序,则可能存在被调用的应用程序未被带到前台的问题。
一个work-around是将HKCU\Control Panel\Desktop\ForegroundLockTimeout
注册表值设置为0
,而不是默认的200000
毫秒。
应用程序应该如何控制此注册表值?是否可以临时更改它以实现解决方法,然后再将其更改回来?
发布于 2013-11-05 21:18:04
动态修改注册表永远不是一种可接受的解决方法。如果一个应用程序拥有前台窗口,那么激活另一个应用程序的窗口将不会有任何问题。这可以使用AllowSetForegroundWindow() winapi函数显式完成。链接的MSDN页面还列出了确切的规则。还有助于查找SystemParameterInfo函数的SPI_SETFOREGROUNDLOCKTIMEOUT参数。
有一个肮脏的非法黑客来打破规则。我不会详细介绍它,只是提到它实际上是在.NET框架中使用的。由于您的大多数问题都是.NET问题,我假设它适用,所以您可以使用Microsoft.VisualBasic.Interaction.AppActivate()方法。顺便说一句,并不是那么容易使用。
一定要记住,用户绝对讨厌这种黑客攻击。确保您的卸载程序是正确的。
https://stackoverflow.com/questions/19787688
复制相似问题