La ventana activa (programa) pierde inesperadamente el foco en Windows 7


23

Algo está cambiando (robando) el foco de mi ventana activa (programa activo) en mi Windows, ya que lo estoy usando actualmente.

Tengo el mismo problema que se describe en esta pregunta , con algunas excepciones:

  1. Observé este comportamiento en (al menos) dos computadoras diferentes, por lo que no se trata de una máquina específica.

  2. Una de las computadoras mencionadas tiene Windows 7 HE de 64 bits, otra tiene Windows 7 Pro de 32 bits, por lo que este problema no es específico de una versión particular de Windows o de una plataforma de hardware en particular.

  3. A veces, el foco se pierde para siempre (debe hacer clic en la ventana para continuar usándolo), a veces simplemente se cambia a otro proceso en segundo plano (?) Y regresa después de aproximadamente 2-3 segundos.

  4. No he estado instalando nada nuevo en ninguna de estas computadoras durante las últimas semanas (a excepción de Windows Update y otras actualizaciones automatizadas como la actualización automática del navegador Chrome) y ciertamente mencioné que los problemas comenzaron a ocurrir muchos días después de la última instalación .

El comportamiento actual de mi computadora es realmente extraño y todo se vuelve molesto. Ejemplos:

  1. Estoy seleccionando un texto en Chrome y realmente veo que el color de la selección cambia de azul (selección en una ventana activa) a gris (selección en una ventana inactiva).

  2. Estoy editando algún documento en Word, Notepad ++ o un correo electrónico en Gmail en Chrome y el proceso de edición se detiene durante unos segundos (cuando cambia el foco) para finalizar de forma permanente (el foco se pierde para siempre).

Tengo Microsoft Security Essentials activo, actualizado y en funcionamiento y no informa nada inusual.

Tenía la sensación de que ocurre con mayor frecuencia en Google Chrome. Al principio estaba tan seguro, que estaba casi listo para acusar algunas de las últimas actualizaciones de este navegador. Pero resultó que noté esto inusualmente a menudo en Chrome, porque este es mi programa más utilizado.

¿Alguien tiene o ha tenido problemas similares o tiene alguna idea, qué puede estar causando esto o cómo solucionarlo?


2
¿El problema también ocurre en Modo a prueba de fallos (con o sin redes)? Inicio msconfig, y seleccione la pestaña Inicio . ¿Qué programas hay?
y31415

1
Es muy difícil "atrapar" el problema descrito, porque no sucede con demasiada frecuencia. Por ejemplo, no hay rastro de los últimos dos días. Entonces tendría que trabajar días en Modo a prueba de errores para tratar de "atrapar" esto. Pero gracias por la idea. Además, vea mi respuesta a continuación.
trejder

Respuestas:


17

Como me aconsejó y31415 , eché un vistazo cuidadoso a lo que está en mi Startuppestaña del msconfigprograma, pero no encontré nada inusual.

Ahora está claro que esto es 99% causado por algún programa externo (aunque no lo noté antes y aunque no he instalado nada nuevo recientemente), no por Windows. Este es el punto más importante para mí aquí.

Busqué en Google un poco más y obtuve algunas ideas / consejos, a saber, que debería intentar presionar Alt+ F4inmediatamente después de notar un robo de enfoque. Esto debería salir del proceso que podría causar este enfoque sigiloso. Entonces, es posible que trate de usar Process Monitorde Sysinternalspaquete para rastrear el proceso que recién ha salido.

Esto puede darme una idea de lo que está causando este problema.


1
Desde msconfig, seleccione la pestaña Servicios y active Ocultar todos los servicios de Microsoft . Comprueba eso también. Aquí hay un artículo oficial de KB que puede ser útil: realice un inicio limpio para determinar si los programas en segundo plano están interfiriendo con su juego o programa . Además, incluso si no ve nada inusual, creo que sería una buena idea enumerar todos los elementos y servicios de inicio de terceros que recibió.
y31415

@trejder, ¿necesitaba descargar technet.microsoft.com/en-us/sysinternals/bb896645 o algo más, o se refiere a una característica incorporada de Windows que le permite ver una lista de procesos que salieron recientemente? ¡Gracias!
Ryan

@ Ryan Nope, como en la respuesta, Process Monitordel Sysinternalspaquete.
trejder

2
Cuando lo use Process Monitor, vaya al menú Filtro y agregue el siguiente filtro: La operación no es Process ExitExcluir. El controlador de mi panel táctil arrojaba un error e intentaba informarlo con el Informe de problemas de Windows. Gracias a% #! @ Por estos sitios de preguntas y respuestas o de lo contrario habría destruido mi computadora portátil.
Daryl Van Sittert

Me acaba de pasar esto. Resultó ser C: \ Archivos de programa (x86) \ ViveSetup \ PCClient \ HTCVRMarketplaceUserContextHelper.exe - un programa para HTC Vive. Eliminé todo el directorio. Sospecho que es un problema con su actualización a principios de esta semana
MickyD

12

Programé un programa C # para monitorear procesos fluctuantes. Aquí está el código si alguien necesita averiguar qué proceso está causando este problema.

using System;
using System.Diagnostics;
using System.Linq;

namespace ProcessMonitor
{
    class Program
    {
        static void Main(string[] args)
        {
            var lastPros = Process.GetProcesses().Select((x) => x.Id).ToList();
            var oldProcessList = Process.GetProcesses();
            while (true)
            {
                var processlist = Process.GetProcesses();

                var currentPros = processlist.Select(x => x.Id).ToList();
                var diff = lastPros.Except(currentPros).ToList();
                Console.ForegroundColor = ConsoleColor.Red;

                var pro = oldProcessList.Where(x => diff.Contains(x.Id)).ToList();

                if (diff.Count == 0)
                {
                    pro = processlist.Where((x) => diff.Contains(x.Id)).ToList();
                    diff = currentPros.Except(lastPros).ToList();
                    Console.ForegroundColor = ConsoleColor.Green;
                    pro = processlist.Where((x) => diff.Contains(x.Id)).ToList();
                }
                foreach (var oldPid in diff)
                {
                    Console.Write("PID {0}", oldPid);
                    try
                    {
                        Console.WriteLine(" name {0}", pro.Where((x) => x.Id == oldPid).ToList()[0].ProcessName);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($" Hit exception {e}");
                    }
                }
                if (diff.Count > 0)
                {
                    lastPros = currentPros;
                    oldProcessList = processlist;
                }
                System.Threading.Thread.Sleep(100);
            }
        }
    }
}

Muestra de salida que muestra el inicio del proceso (verde) y la finalización (rojo)

Muestra de salida


11
Buena idea y buen código. Pero, dado que este es un sitio para usuarios , no para desarrolladores (esto es Super Usuario, no Desbordamiento de pila), entonces debe agregar alguna explicación sobre cómo un desarrollador que no es C # puede ejecutar su código.
trejder

Creé una versión mejorada de esto y la puse en mi propia respuesta , incluidas las respuestas a sus preguntas, @trejder.
Palec

probablemente convierta esto en PowerShell que no necesita un compilador de C #?
phuclv

@phuclv seguro adelante: D
Omar Alshaker

7

El foco probablemente es robado por una tarea de fondo con errores. Abre una ventana, que roba el foco, y se cierra muy rápidamente, pero el foco no regresa. Últimamente, Microsoft Office tenía ese error .

Para descubrir tales procesos, puede usar herramientas como Window Focus Logger ( espejo ) o un programa C # personalizado similar a Process Monitor :

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace ProcessMonitor
{
    class Program
    {
        const int pollDelay = 100;

        static void Main(string[] args)
        {
            var lastProcesses = GetDescriptions();
            while (true)
            {
                System.Threading.Thread.Sleep(pollDelay);
                var now = DateTime.Now;
                var processes = GetDescriptions();

                var started = processes.Except(lastProcesses);
                var stopped = lastProcesses.Except(processes);

                foreach (var p in started)
                {
                    Print(now, p, ConsoleColor.Green);
                }
                foreach (var p in stopped)
                {
                    Print(now, p, ConsoleColor.Red);
                }

                lastProcesses = processes;
            }
        }

        static void Print(DateTime dateTime, ProcessDescription process,
            ConsoleColor color)
        {
            Console.ForegroundColor = color;
            Console.WriteLine("{0:hh\\:mm\\:ss\\.ff}\tPID {1}\t{2}",
                dateTime.TimeOfDay, process.Id, process.Description);
            Console.ResetColor();
        }

        static List<ProcessDescription> GetDescriptions()
        {
            return Process.GetProcesses().Select(x => GetDescription(x)).ToList();
        }

        static ProcessDescription GetDescription(Process p)
        {
            int pid = -1;
            string description;
            try
            {
                pid = p.Id;
                description = p.ProcessName;
            }
            catch (Exception e)
            {
                description = "Hit exception " + e;
            }
            return new ProcessDescription { Id = pid, Description = description };
        }

        struct ProcessDescription
        {
            public int Id;
            public string Description;

            public override bool Equals(object obj)
            {
                return obj != null && Id == ((ProcessDescription)obj).Id;
            }
            public override int GetHashCode()
            {
                return Id.GetHashCode();
            }
        }
    }
}

Versión pulida y corregida del código proporcionado por Omar Alshaker . Tampoco requiere C # 6. Requiere .NET 3.5 o más reciente.

Puede compilarlo utilizando el compilador C # ( csc.exe) que viene con su instalación de .NET Framework y ejecutar el ejecutable resultante para obtener un registro en tiempo real de los procesos que comienzan (verde) o finalizan (rojo). Use Ctrl+ Cpara terminarlo.


Para encontrar el compilador, ejecute where /R %windir%\Microsoft.NET csc.exe. Elija uno de la última versión .NET instalada, sin importar si 32b o 64b. Guarde el código C # Program.csy compílelo en Program.exe:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Program.cs

Este código me da el error "No se pudo encontrar el tipo o el espacio de nombres" Proceso " Entonces necesitaba agregar una referencia a System.dll.
Wilson

Extraño, @Wilson. ¿Qué versión de csc.exe estás usando?
Palec

1
Por cierto, la línea de comando será csc.exe -reference:System.dll Program.csentonces. Consulte los documentos de opción del compilador de referencia de C # .
Palec

TengoMicrosoft (R) Visual C# Compiler version 2.6.0.62329 (5429b35d)
Wilson

Esa versión parece ser de una versión anterior de VS 2017 (o sus herramientas de compilación). No puedo reproducir el problema con VS 2017 actual (15.6.4, csc -version2.7.0.62715 (db02128e)). Aún así, gracias por compartir el problema y su solución.
Palec

4

En mi caso fue que wermgr.exe (informe de errores de Windows) comenzó una y otra vez. Seguí la solución a continuación para evitar que se iniciara automáticamente, y eso resolvió el problema.

  1. Botón Inicio -> En el cuadro de búsqueda, escriba Centro de acción -> Enter.
  2. Haga clic en la flecha junto a Mantenimiento para expandir.
  3. En Buscar soluciones a informes de problemas , haga clic en Configuración .
  4. Haga clic en Cambiar la configuración del informe para todos los usuarios .
  5. Verifique el botón de radio junto a Cada vez que ocurra un problema, pregúnteme antes de buscar una solución .
  6. Haga clic en Aceptar para salir.

3

La sugerencia de usar Alt+F4para salir del programa de interrupción funcionó bien. En lugar de rastrear el programa recién salido con SysInternal's ProcessManager, rastreé el programa de la siguiente manera:

  1. Abierto Task manager
  2. Tome una captura de pantalla de procesos abiertos
  3. Cambie a Navegador, Correo, etc. y "espere la pérdida de enfoque"
  4. Presione Alt+F4para salir del programa de interrupción
  5. Ir Task managery comparar procesos abiertos con captura de pantalla
  6. El proceso ahora "perdido" causó el problema

En mi caso fue twcu.exe, un programa que comienza con TP-Link Configuration tool. Es utilizado por dispositivos WIFI-USB externos. Como se informó aquí ( twcu.exe en file.net ) y aquí ( twcu.exe en computerbase.de [alemán] ), TP-Link Configuration toolno es necesario para la conexión WIFI en sí. Lo eliminé del inicio automático ( msconfig> system start), reinicié la computadora y todavía se conecta al WIFI sin fallas, ¡y los problemas de pérdida de enfoque desaparecieron!


2

He quitado NMBgMonitor.exede servicios de inicio para resolver el problema.

También tuve el mismo problema con la ventana de Google Chrome que perdió el foco durante varios segundos y luego regresó. Al observar la pestaña de servicios del administrador de tareas, noté que cada vez que se perdía el foco, NMBgMonitor estaba activo (tiene algo que ver con Nero).


2

en mi caso, y probablemente en todos los casos de pc / laptop de lenovo, el problema fue con lenovo svcguihlpr.exe, que comienza a funcionar cada pocos minutos y se enfoca sin que se muestre la interfaz de usuario ... este proceso es la aplicación Lenovo Access Connections que proporciona una buena interfaz de usuario para administrar redes wifi y de banda ancha ... nunca lo usé, incluso lo eliminé de la barra de tareas pero aún funciona ...

¡Hoy descubrí que era el problema y lo desinstalé!

Muy divertido..

por cierto, lo encontré haciendo lo más idiota posible, tomando mi teléfono, comenzando un video grabando la pantalla donde ejecuto el administrador de tareas y continúo mi trabajo ... una vez que el foco se perdió, esperé un segundo, detuve el registro y comprobé qué procesos se movieron hacia arriba, svcguihlpr estuvo en la parte superior por menos de un segundo ...

Espero que ayude a otros.


fue divertido decir "muy divertido" sobre no tener un problema xD
Motassem MK

2

Tuve este problema, pensé que el momento era aleatorio pero no fue así,

en mi caso fue tan trivial como: ¡cambios en el fondo de pantalla!
Tenía una presentación de diapositivas como fondo de pantalla y cada vez que cambia, ¡el foco se dirige al escritorio!

Espero que este sea el caso de alguien que lea los comentarios y que sea tan simple como esto.

(No sé si Microsoft alguna vez solucionará esto, ya que tengo el problema en la última versión de Windows 10 (1803 - 17134.112))


1

Tenía ventana perdiendo foco constantemente también. Lea que alguien logró rastrear WerSvc está causando problemas al usar un registrador. Incluso si de hecho es un servicio de informe de errores de Windows, pero intenté deshabilitarlo en el Administrador de tareas de Windows - Servicios - Servicios.

Entonces el problema de pérdida de enfoque se detuvo.

Quizás ustedes puedan intentarlo.


1

¡Este problema me volvió loco! Así que decidí escribir un programa para decirme quién o qué está alejándose de mi programa. Realmente molesto cuando estás jugando Age of Empires y el juego va al escritorio al azar.

Aquí están los hallazgos ...

Verizon! Sí, había instalado alguna aplicación auxiliar de Verizon y ¡fue la culpable!
Entra en - Panel de control -> Programas y características
y desinstala todo lo relacionado con Verizon.

Olvidé los nombres de los programas, generalmente comencé con un Vz ..., y también hay un servicio IW ... Honestamente lo olvido ya que no podía esperar para matar lo que había en mi máquina (me volvió loco) ), pero cuando desinstala la aplicación Verizon, el problema desaparece.


1

En mi caso, solucioné el problema yendo al administrador de procesos de Windows y verificando si algún programa se está iniciando y cerrando constantemente. Pude notar que un programa que descargué (creo que se llamaba inicio de Windows 8) se reiniciaba cada 7 segundos. Eliminé todo lo relacionado con él, ¡y funcionó!


1

Estaba teniendo el problema de que la ventana activa perdía el foco cada pocos segundos. Tendría que hacer clic izquierdo para seguir escribiendo. Enloquecedor.

Noté que el esquema de color para las áreas alrededor de los bordes de las ventanas cambiaba cada vez que sucedía. Parecía una manera fácil de ver la pérdida de enfoque sin escribir realmente.

Entonces, comencé el administrador de tareas de Windows e hice clic en la pestaña de procesos. Después de mirar por un momento, pude ver que el administrador de escritorio de Adobe salía y aparecía en la lista simultáneamente con la pérdida de cambio de foco de color.

Descargué y reinstalé la aplicación de escritorio Adobe Creative Cloud. (Nota: no pude desinstalarlo, así que acabo de instalar la descarga sobre la existente. Hay un programa especial para desinstalar Creative Cloud si esto no funciona). Esto solucionó mi problema por completo.

Para aquellos con Creative Cloud, este podría ser el programa. Para aquellos que no lo tienen, ver la pestaña de procesamiento y el cambio de color alrededor de los bordes de las ventanas con cada pérdida de enfoque puede ayudarlos a encontrar al culpable.


1

Utilicé el administrador de tareas para buscar procesos en segundo plano, y Synaptics Touchpad fue el culpable.

El 'controlador' estaba encendido constantemente, pero otro proceso de Synaptics aparecía cada pocos segundos y hacía que se perdiera el foco.

Desinstalé Synaptics y hey presto, ¡no pierdas más el foco!


1

En Regedit (mantenga presionado el botón Inicio + R, luego escriba regedit), cambie el valor HKEY_CURRENT_USER \ Control Panel \ Desktop \ ForegroundLockTimeout de 0 a 30d40. Guarde y reinicie la computadora.


0

Busque una utilidad de respaldo como Gladinet o Nuance Cloud Connector. (Ambos usan el motor de Gladinet y ya conocían este tipo de problema en 2012). Están ejecutando un dll sin ventanas / sin tareas basado en Explorer.exe.


0

Mi Samsung Galaxy S6 estaba en constante "Actualización de Android" y cuando se conectó a través de USB para cargar, perdí el problema de enfoque cada 10 segundos, pero no apareció ninguna ventana del explorador al frente. Cambié el puerto USB y seleccioné el modo "Carga USB" desde el teléfono, luego de que desapareció el problema de enfoque.

Pero el problema constante "Actualización de Android" todavía está ahí y necesita ser resuelto aún.


0

Tengo el mismo problema. Mi caso fue un programa de Windows XP que se ejecutó en una cuenta de usuario estándar. Necesitaba derechos elevados de administrador para ejecutarse. Entonces, aunque se ejecutó en segundo plano, no lo vi, con frecuencia robó el foco de mi ventana actual (Windows Explorer, Firefox y otros programas). Es muy molesto. Utilicé focus.exe por happy droid para identificar al culpable. También puede usar Windows Focus Logger para el mismo propósito.


-1

El mismo problema que encontré. Mi laptop es un poco vieja. Tiene 2 GB de RAM y Windows 7. Después de correr durante una hora, esto sucede siempre. Noté que este caso surge cuando la computadora portátil se estaba sobrecalentando. Solución: instale un software automático de limpieza de RAM. Ha pasado un mes después de instalar el limpiador automático de RAM y nunca volví a enfrentar el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.