4

如果一个应用程序调用并激活另一个应用程序,则可能会出现调用的应用程序没有被带到前台的问题。

一种解决方法是将HKCU\Control Panel\Desktop\ForegroundLockTimeout注册表值设置为0而不是默认200000毫秒。

应用程序应如何控制此注册表值?临时更改它以实现解决方法然后将其更改回来是否可行?

4

1 回答 1

7

即时破解注册表绝不是一种可接受的解决方法。如果一个应用程序拥有前台窗口,那么激活另一个应用程序的窗口不会有任何问题。可以使用AllowSetForegroundWindow() winapi 函数显式完成。链接的 MSDN 页面还列出了确切的规则。还有助于找到 SystemParameterInfo 函数的 SPI_SETFOREGROUNDLOCKTIMEOUT 参数。

有一个肮脏的无证黑客来打破规则。除了提到它实际上用于 .NET 框架之外,我不会详细介绍它。由于您的大多数问题都是 .NET 问题,我假设它适用,您可以使用 Microsoft.VisualBasic.Interaction.AppActivate() 方法。顺便说一句,不是那么容易使用。

请记住,用户绝对讨厌这种黑客行为。确保您的卸载程序是健全的。

于 2013-11-05T13:18:03.517 回答