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

时间:2010-07-13 08:27:15

标签: visual-studio debugging focus breakpoints

当Visual Studio中断点 点击时,从任何其他应用程序中窃取焦点正在观看/输入那一刻。这可能非常令人恼火,因为VS抓住程序员当时正在键入其他应用程序的任何键盘输入,并将该输入作为自己的输入。

你们用什么技巧来阻止这种焦点窃取?

(我在Visual C ++ 2008和2010上面对此问题。我猜这是一般的Visual Studio和所有最新版本的问题。)

5 个答案:

答案 0 :(得分:16)

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

要获得更多控制权,请下载 Powertoys for Windows XP的 Tweak UI 实用程序。在“常规”选项卡中,选择“焦点”并选中“防止应用程序窃取焦点”。

答案 1 :(得分:9)

右键单击断点并选择When hit ...这将允许您在命中断点时运行函数。您可以使用它将状态消息打印到输出窗口。您的申请将保持专注。

答案 2 :(得分:2)

我意外地发现了一种解决方法,我已经使用了几年,虽然我在2008年和2010年都没有对它进行测试,但它肯定会在2013年使用,' 15& ; ' 17至少Windows 7& 10.

它依赖于以下事实:如果另一个Visual Studio实例在执行中暂停, Visual Studio将不会窃取焦点。显然唯一与VS一样特殊的是另一个VS. : - /

使用简单项目打开VS的第二个实例。无论如何暂停执行项目(例如,在第一行执行和调试时设置断点),然后您可以简单地最小化VS,并且您实际使用的VS实例都不会窃取焦点。

这显然是一个重量级的解决方案,但是如果你有足够的RAM(空闲VS的CPU使用率甚至没有为我注册),它运行良好。我还没有尝试使用版本间实例(例如暂停使用' 13来表现' 17),但是如果这样做有用,你可能会选择使用旧版本实例作为你的"虚拟" VS减少资源使用。

答案 3 :(得分:0)

一种解决方法是使用OutputDebugString()函数将当前状态输出到调试器输出窗口。您只需将Visual Studio放在后台,定位调试的程序窗口,以便“输​​出”窗口可见 - 并且不会发生焦点转换。

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

答案 4 :(得分:0)

此问题最终在VS2019中修复。转到“工具”->“选项”->“调试”->“常规”,底部的底部是“在调试器中断时将Visual Studio带到前台。”
只需取消选择它,您就不会在多任务处理中被打扰。

enter image description here