Visual Studio:如何阻止偷点焦点的断点?

当Visual Studio中有一个断点时 ,它就会从那个程序员正在查看/input的任何其他应用程序中窃取焦点 。 这可能是非常恼人的,因为VS抓住了程序员在那个时候input到另一个应用程序的任何键盘input,并且把它作为自己的input。

你们用什么技巧来防止这种焦点偷窃?

(我在Visual C ++ 2008和2010上遇到了这个问题。我猜测这对Visual Studio来说是一个问题,对于所有最近的版本来说都是如此)。

这是一个registry设置。 请参阅http://technet.microsoft.com/en-us/library/cc957208.aspx上的; ForegroundLockTimeout 。 零允许应用程序窃取焦点。 当“防止应用程序窃取焦点”被选中时, TweakUI将此值设置为200000。

有关更多控制,请下载适用于Windows XPPowertoysTweak UI实用程序。 在“常规”选项卡中,select“焦点”并选中“防止应用程序窃取焦点”。

右键单击断点并select当命中…这将允许您在命中断点时运行一个函数。 您可以使用它将状态消息打印到输出窗口。 你的应用程序将保持焦点。

一种解决方法是使用OutputDebugString()函数将当前状态输出到debugging器输出窗口中。 您只需将Visual Studio放置在后台,将debugging的程序窗口置于“输出”窗口即可看到,并且不会发生焦点转换。

您可能需要使用macros进行条件编译,以便跟踪代码不会包含在发布版本中。

无意中发现了一个解决方法,我已经使用了几年了,虽然我没有在2008年和2010年testing过,但它肯定在2013年,15和17年,至lessWindows 7和10。

它依赖于如果另一个Visual Studio实例暂停执行Visual Studio将不会窃取焦点。 显然唯一和VS一样特别的是VS. : – /

用一个简单的项目打开VS的第二个实例。 暂时停止项目的执行(例如,在第一行执行和debugging中放置一个断点),然后可以简单地将VS最小化,而实际使用的任何VS实例都不会集中注意力。

这显然是一个重量级的解决scheme,但是如果你有足够的内存(空闲的VS的CPU使用率甚至没有为我注册),它运作良好。 我没有尝试过版本间的实例(例如,在'13中暂停'17'的行为),但如果这样做,你可能会想select使用旧版本的实例作为你的“虚拟”VS减less在资源使用上。