2010-07-13 17 views
38

Cuando un punto de interrupción es golpeó en Visual Studio, que roba el foco de cualquier otra el programador de aplicaciones está viendo/escribiendo en ese momento. Esto puede ser muy irritante ya que VS toma cualquier entrada de teclado que el programador estaba escribiendo en la otra aplicación en ese momento y toma esa entrada como propia.Visual Studio: ¿Cómo detener el punto de ruptura del robo de foco?

¿Cuáles son los trucos que usan las personas para evitar este robo de enfoque?

(enfrento esto en Visual C++ 2008 y 2010. Estoy adivinando que es un problema para Visual Studio en general y para todas las versiones recientes.)

+0

Esto no es un problema de Visual Studio. Esta es una característica del sistema operativo Windows. – AMissico

Respuesta

0

Una solución consiste en utilizar OutputDebugString() función de estado actual de salida en la ventana de salida del depurador Simplemente coloque Visual Studio en segundo plano, coloque la ventana del programa depurada para que la ventana "Salida" esté visible, y no ocurra ninguna transición de enfoque.

Quizás desee utilizar macros para compilación condicional para que el código de rastreo no se incluya en las compilaciones de lanzamiento.

8

Haga clic con el botón derecho en el punto de interrupción y seleccione Al presionar ... esto le permitirá ejecutar una función cuando se golpee el punto de interrupción. Puede usar esto para imprimir mensajes de estado en la ventana de salida. Tu aplicación mantendrá el foco.

+1

Esto es muy útil. Utilizo mucho esta técnica (aunque realmente puede ralentizar la aplicación) –

+1

Sí, ¡esto es bastante útil! Estaba probando algunos comportamientos de WinForms que incluyen 'Focus' y VS me estaba fastidiando bastante. Este método resolvió mi problema (ya que el fix/hack marcado como respuesta no gana 7). –

16

Esta es una configuración de registro. Consulte ForegroundLockTimeout en http://technet.microsoft.com/en-us/library/cc957208.aspx. Zero permite que las aplicaciones roban el foco. TweakUI establece este valor en 200000 cuando se selecciona "Impedir que las aplicaciones se roben el foco".

Para un mayor control, descargue el Tweak UI utilidad de Powertoys para Windows XP. En la pestaña "General", seleccione "Enfocar" y marque "Evitar que las aplicaciones roben el foco".

+0

+1 ¡guau! ¡gran respuesta! –

+7

El valor de ForegroundLockTimeout en mi registro en Windows 7 ya es de 0x30d40 (200000) y, sin embargo, veo que VStudio roba el foco cuando se llega a un punto de interrupción. –

+5

Confirmo que esta respuesta aborda el comportamiento de robar el enfoque de prácticamente todas las aplicaciones, excepto Visual Studio. –

0

Por accidente descubrí una solución, que he estado usando durante unos años y, aunque no he 't probado que en 2008 y 2010, trabaja ciertamente en 2013, '15 y '17 & al menos Windows 7 & 10.

se basa en el hecho de que Visual Studio no robará el foco si otra instancia de Visual Studio está detenida en ejecución. Obviamente, lo único tan especial como VS es otro VS. : -/

Abra una segunda instancia de VS con un proyecto simple. Detenga la ejecución del proyecto de la forma que desee (por ejemplo, ponga un punto de interrupción en la primera línea de ejecución y depuración), luego puede simplemente minimizar ese VS y ninguna de las instancias de VS que esté usando robará el foco.

Esto es obviamente una solución pesada, pero si tienes suficiente RAM (el uso de la CPU del VS libre no se registra para mí), funciona bien. No lo he intentado con instancias entre versiones (por ejemplo, pausar en '13 para hacer que '17 se comporte), pero si eso funciona, probablemente querrás optar por usar la instancia de versión anterior como VS "ficticia" para reducirla sobre el uso de recursos.

Cuestiones relacionadas