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

Ash*_*ppa 47 debugging focus breakpoints visual-studio

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

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

(我在Visual C++ 2008和2010上面对此问题.我猜测它对于Visual Studio以及所有最新版本都是一个问题.)

AMi*_*ico 16

这是一个注册表设置.见ForegroundLockTimeouthttp://technet.microsoft.com/en-us/library/cc957208.aspx.零允许应用程序窃取焦点.当选中 "防止应用程序窃取焦点"时,TweakUI将此值设置为200000.

要获得更多控制,请下载Powertoys for Windows XPTweak UI实用程序.在"常规"选项卡中,选择"焦点"并选中"防止应用程序窃取焦点".

  • 我在Windows 7上的注册表中的ForegroundLockTimeout的值已经是0x30d40(200000),但是当看到断点时,我看到VStudio窃取了焦点. (8认同)
  • 微软的业余爱好正在绕过自己的功能.他们认为他们拥有这个地方.这真是令人讨厌. (7认同)
  • 我确认这个答案解决了几乎每个应用程序的焦点窃取行为,但Visual Studio. (5认同)
  • 不幸的是Visual Studio似乎并不关心这个设置. (3认同)
  • 任何Windows 7解决方案? (3认同)

Dan*_*ams 10

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

在此处输入图片说明

  • 是的,我有时会忘记我正在调试,然后必须打开 VS 才能看到我处于断点处。但这比打字时被随机打断要好得多! (2认同)

Bri*_*sen 9

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


sha*_*oth 0

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

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