Windows 7 Windows 7:防止应用程序失去焦点 我有一个自制的全屏应用程序,它是用C++编写的Windows 7,它应该作为一个公开的演示运行很长时间。

Windows 7 Windows 7:防止应用程序失去焦点 我有一个自制的全屏应用程序,它是用C++编写的Windows 7,它应该作为一个公开的演示运行很长时间。,windows-7,focus,windows-shell,Windows 7,Focus,Windows Shell,问题是,有几个应用程序或驱动程序或窗口本身会不时和/或特别是在系统启动时窃取焦点。 结果是:我的全屏应用程序被最小化 这是非常烦人的,几乎不可能总是找出你必须停用哪些东西来防止这种情况。特别是因为有时候需要那些专注的东西,例如触摸屏驱动程序 我能做些什么来防止失去焦点 或者更好:如何防止其他应用程序窃取焦点-我记得在TweakUI for Windows XP中曾经有过这样的设置。TweakUI通过更改SPI\u SETFOREGROUNDLOCKTIMEOUT来实现这一点。您可以将此与lock

问题是,有几个应用程序或驱动程序或窗口本身会不时和/或特别是在系统启动时窃取焦点。 结果是:我的全屏应用程序被最小化

这是非常烦人的,几乎不可能总是找出你必须停用哪些东西来防止这种情况。特别是因为有时候需要那些专注的东西,例如触摸屏驱动程序

我能做些什么来防止失去焦点


或者更好:如何防止其他应用程序窃取焦点-我记得在TweakUI for Windows XP中曾经有过这样的设置。

TweakUI通过更改
SPI\u SETFOREGROUNDLOCKTIMEOUT
来实现这一点。您可以将此与
locksetforegroundindow

结合使用,这是一个很好的答案,但不幸的是,它不能解决我的问题。我认为问题不在于应用程序试图将一个已经存在的窗口设置为forground,我想这在Windows7中是默认阻止的。但它是通过shellexec或其他方式创建临时窗口的。来自驱动程序或自动更新程序或其他什么的一些邪恶的后台进程。糟糕的是,我无法轻松访问播放器计算机:-(LockSetForegroundWindow应该会阻止这种情况。但是请注意,当用户按Alt键或单击另一个窗口时,通过LockSetForegroundWindow设置的锁将被清除,因此您必须密切关注它。您的解决方案有效。在System Parameters Info中出错(SPI_SETFOREGROUNDLOCKTIMEOUT…)因为我没有意识到你必须通过指针参数值来传递值,虽然有一个整数参数(当然这很奇怪),但是应用程序设置一个全局系统参数(SPI_SETFOREGROUNDLOCKTIMEOUT)听起来不是个好主意为了解决失去焦点的局部问题。或者我错了吗?一般来说,是的,但是这个程序运行在一台专门运行一个应用程序的机器上,所以在这种情况下global=local。