当Visual Studio中断点 点击时,从任何其他应用程序中窃取焦点正在观看/输入那一刻。这可能非常令人恼火,因为VS抓住程序员当时正在键入其他应用程序的任何键盘输入,并将该输入作为自己的输入。
你们用什么技巧来阻止这种焦点窃取?
(我在Visual C ++ 2008和2010上面对此问题。我猜这是一般的Visual Studio和所有最新版本的问题。)
答案 0 :(得分:16)
这是一个注册表设置。请参阅http://technet.microsoft.com/en-us/library/cc957208.aspx上的ForegroundLockTimeout
。零允许应用程序窃取焦点。当选中“防止应用程序窃取焦点”时, TweakUI 将此值设置为200000。
要获得更多控制权,请下载 Powertoys for Windows XP的 Tweak UI 实用程序。在“常规”选项卡中,选择“焦点”并选中“防止应用程序窃取焦点”。
Bing搜索阻止应用程序窃取焦点 http://www.bing.com/search?q=Prevent+applications+from+stealing+focus
应用程序窃取专注于Windows XP 的http://mycvs.org/archives/2004/11/16/applications-stealing-focus-on-windows-xp用于 TweakUI 的屏幕截图。
请不要偷走我的焦点,编码恐怖,杰夫阿特伍德http://www.codinghorror.com/blog/2007/12/please-dont-steal-my-focus.html
奇怪的是,有 规定内置于经营中 系统保护我们免受严重伤害 书面,重点窃取应用程序。 ForegroundLockTimeout 注册表 设置明确地设计为 防止应用程序窃取 来自用户的关注。操作系统默默无闻 转换不适当的焦点 窃取行为变得更友好, 侵入性较小的任务栏按钮闪烁, 这是主题 ForegroundFlashCount 注册表设置。
如何防止程序在Windows XP中窃取焦点 http://www.howtodothings.com/computers-internet/how-to-prevent-programs-from-stealing-focus-in-windows-xp
答案 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)