La fenêtre active (programme) perd inopinément le focus dans Windows 7


23

Quelque chose est en train de déplacer (voler) le focus de ma fenêtre active (programme actif) dans mon Windows, comme je l'utilise actuellement.

J'ai le même problème que celui décrit dans cette question , à quelques exceptions près:

  1. J'ai observé ce comportement sur (au moins) deux ordinateurs différents, donc ce n'est pas spécifique à une machine.

  2. Un des ordinateurs mentionnés a Windows 7 HE 64 bits, un autre a Windows 7 Pro 32 bits, donc ce problème n'est pas spécifique à une version particulière de Windows ou à une plate-forme matérielle particulière.

  3. Parfois, le focus est perdu pour de bon (il faut cliquer sur la fenêtre pour continuer à l'utiliser), parfois il est simplement déplacé vers un autre processus d'arrière-plan (?) Et revient après environ 2-3 secondes.

  4. Je n'ai rien installé de nouveau sur aucun de ces ordinateurs au cours des dernières semaines (à l'exception de Windows Update et d'autres mises à jour automatisées comme la mise à jour automatique du navigateur Chrome) et j'ai certainement mentionné que les problèmes ont commencé à se produire plusieurs jours après la dernière installation .

Le comportement actuel de mon ordinateur est vraiment bizarre et le tout devient ennuyeux. Exemples:

  1. Je sélectionne du texte dans Chrome et je vois que la couleur de la sélection passe du bleu (sélection dans une fenêtre active) au gris (sélection dans une fenêtre inactive).

  2. J'édite un document dans Word, Notepad ++ ou un e-mail dans Gmail dans Chrome et le processus d'édition s'arrête pendant quelques secondes (lorsque le focus change) car il est définitivement arrêté (focus perdu définitivement).

J'ai Microsoft Security Essentials actif, mis à jour et fonctionnel et il ne signale rien d'inhabituel.

J'ai eu le sentiment que cela se produit le plus souvent dans Google Chrome. Au début, j'étais si sûr que j'étais presque prêt à accuser certaines des dernières mises à jour de ce navigateur. Mais il s'est avéré que je l'ai remarqué inhabituellement souvent dans Chrome, car c'est mon programme le plus utilisé.

Est-ce que quelqu'un a ou a eu des problèmes similaires ou a une idée de ce qui peut être à l'origine de cela ou comment y remédier?


2
Le problème se produit-il également en mode sans échec (avec ou sans réseau)? Cliquez sur Démarrer msconfiget sélectionnez l' onglet Démarrage . Quels programmes existe-t-il?
and31415

1
Il est très difficile de «détecter» le problème décrit, car cela ne se produit pas trop souvent. Par exemple - aucune trace depuis deux jours. Je devrais donc travailler des jours en mode sans échec pour essayer de "rattraper" cela. Mais merci pour l'idée. Voir également ma réponse ci-dessous.
trejder le

Réponses:


17

Comme and31415 me l'a conseillé, j'ai examiné attentivement ce qui se trouve dans mon Startuponglet de msconfigprogramme, mais je n'ai rien trouvé d'inhabituel.

Il est maintenant clair que cela est à 99% provoqué par un programme externe (bien que cela n'ait pas été remarqué auparavant et que je n'aie rien installé de nouveau récemment), pas par Windows. C'est le point le plus important pour moi ici.

J'ai googlé un peu plus et obtenu quelques idées / conseils, à savoir que je devrais essayer d'appuyer sur Alt+ F4immédiatement après avoir remarqué un vol de concentration. Cela devrait quitter le processus qui pourrait causer cette concentration furtive. Ensuite, je peux essayer d'utiliser à Process Monitorpartir du Sysinternalspackage pour suivre le processus qui vient de se terminer.

Cela peut me donner une idée de la cause de ce problème.


1
Dans msconfig, sélectionnez l' onglet Services et activez Masquer tous les services Microsoft . Vérifiez cela aussi. Voici un article officiel de la base de connaissances qui peut être utile: effectuez un démarrage propre pour déterminer si les programmes d'arrière-plan interfèrent avec votre jeu ou votre programme . De plus, même si vous ne voyez rien d'inhabituel, je pense que ce serait une bonne idée de répertorier tous les éléments et services de démarrage tiers que vous avez obtenus.
and31415

@trejder, avez-vous eu besoin de télécharger technet.microsoft.com/en-us/sysinternals/bb896645 ou autre chose, ou faites-vous référence à une fonctionnalité intégrée de Windows qui vous permet de consulter une liste des processus qui se sont récemment arrêtés? Merci!
Ryan

@Ryan Nope, comme dans la réponse - Process Monitordu Sysinternalspaquet.
trejder

2
Lors de l'utilisation Process Monitor, accédez au menu Filtre et ajoutez le filtre suivant: L'opération n'est pas Process Exitalors Exclure. Mon pilote de pavé tactile générait une erreur et tentait de la signaler avec le rapport de problème Windows. Merci% #! @ Pour ces sites de questions / réponses, sinon j'aurais détruit mon ordinateur portable.
Daryl Van Sittert

Je venais juste de m'arriver. Il s'est avéré être C: \ Program Files (x86) \ ViveSetup \ PCClient \ HTCVRMarketplaceUserContextHelper.exe - un programme pour HTC Vive. J'ai supprimé tout le répertoire. Je soupçonne que c'est un problème avec leur mise à jour plus tôt cette semaine
MickyD

12

J'ai programmé un programme C # pour surveiller les processus fluctuants. Voici le code si quelqu'un a besoin de savoir quel processus est à l'origine de ce problème.

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);
            }
        }
    }
}

Échantillon de sortie montrant le démarrage du processus (vert) et la fin (rouge)

Échantillon de sortie


11
Bonne idée et joli morceau de code. Mais, puisque c'est un site pour les utilisateurs , pas pour les développeurs (c'est Super User, pas Stack Overflow), alors vous devriez ajouter quelques explications sur la façon dont un développeur non C # est capable d'exécuter votre code?
trejder

J'ai créé une version améliorée de ceci et l' ai mis dans ma propre réponse , y compris les réponses à vos questions, @trejder.
Palec

probablement convertir cela en PowerShell qui n'a pas besoin d'un compilateur C #?
phuclv

@phuclv allez-y: D
Omar Alshaker

7

Le focus est probablement volé par une tâche d'arrière-plan buggy. Il ouvre une fenêtre, qui vole le focus, et il se ferme très rapidement, mais le focus ne revient pas. Dernièrement, Microsoft Office a eu un tel bogue .

Pour découvrir de tels processus, vous pouvez utiliser des outils tels que Window Focus Logger ( miroir ) ou un programme C # personnalisé similaire à 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();
            }
        }
    }
}

Version polie et corrigée d'un bug du code fourni par Omar Alshaker . Ne nécessite pas non plus C # 6. Nécessite .NET 3.5 ou plus récent.

Vous pouvez le compiler à l'aide du compilateur C # csc.exefourni avec votre installation de .NET Framework et exécuter l'exécutable résultant pour obtenir un journal en temps réel des processus qui démarrent (vert) ou se terminent (rouge). Utilisez Ctrl+ Cpour y mettre fin.


Pour trouver le compilateur, exécutez where /R %windir%\Microsoft.NET csc.exe. Choisissez celui de la dernière version .NET installée, que ce soit 32b ou 64b. Enregistrez le code C # Program.cset compilez-le dans Program.exe:

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

Ce code me donne l'erreur "Le type ou l'espace de noms 'Process' est introuvable". J'ai donc dû ajouter une référence à System.dll.
Wilson

Étrange, @Wilson. Quelle version de csc.exe utilisez-vous?
Palec

1
Par ailleurs, la ligne de commande sera csc.exe -reference:System.dll Program.csalors. Voir les documents sur les options du compilateur C # -reference .
Palec

J'aiMicrosoft (R) Visual C# Compiler version 2.6.0.62329 (5429b35d)
Wilson

Cette version semble provenir d'une ancienne version de VS 2017 (ou de ses outils de construction). Je ne peux pas reproduire le problème avec la version actuelle de VS 2017 (15.6.4, csc -version2.7.0.62715 (db02128e)). Encore merci d'avoir partagé le problème et sa solution.
Palec

4

Dans mon cas, c'est que wermgr.exe (rapport d'erreurs Windows) a redémarré encore et encore. J'ai suivi la solution ci-dessous pour l'empêcher de démarrer automatiquement, et cela a résolu le problème.

  1. Bouton Démarrer -> Dans la zone de recherche, saisissez Centre d'action -> Enter.
  2. Cliquez sur la flèche à côté de Maintenance pour développer.
  3. Sous Rechercher des solutions aux rapports de problèmes , cliquez sur Paramètres .
  4. Cliquez sur Modifier les paramètres du rapport pour tous les utilisateurs .
  5. Cochez la case d'option à côté de Chaque fois qu'un problème survient, demandez-moi avant de rechercher une solution .
  6. OK votre sortie, en cliquant sur OK.

3

L'astuce avec l'aide Alt+F4pour quitter le programme d'interruption a bien fonctionné. Au lieu de tracer le programme qui vient de sortir avec SysInternal's ProcessManager, j'ai tracé le programme comme suit:

  1. Ouvert Task manager
  2. Prendre une capture d'écran des processus ouverts
  3. Basculez vers le navigateur, la messagerie, etc. et "attendez la perte de concentration"
  4. Appuyez Alt+F4pour quitter le programme d'interruption
  5. Allez Task manageret comparez les processus ouverts avec la capture d'écran
  6. Le processus maintenant "manquant" a causé le problème

Dans mon cas, c'était twcu.exeun programme qui commence par TP-Link Configuration tool. Il est utilisé par des clés WIFI-USB externes. Comme indiqué ici ( twcu.exe sur file.net ) et ici ( twcu.exe sur computerbase.de [allemand] ), il TP-Link Configuration tooln'est pas nécessaire pour la connexion WIFI elle-même. Je l'ai supprimé d'Autostart ( msconfig> system start), redémarré l'ordinateur et il se connecte toujours au WIFI sans faille - et les problèmes de perte de mise au point ont disparu!


2

J'ai supprimé NMBgMonitor.exedes services de démarrage pour résoudre le problème.

J'ai également eu le même problème avec la fenêtre Google Chrome perdant le focus pendant plusieurs secondes, puis revenant. En regardant l'onglet des services du gestionnaire de tâches, j'ai remarqué que chaque fois que le focus était perdu, NMBgMonitor était actif (cela avait quelque chose à voir avec Nero).


2

dans mon cas, et probablement tous les étuis pour PC / ordinateur portable lenovo, le problème était avec lenovo svcguihlpr.exe qui commence à fonctionner toutes les quelques minutes et à se concentrer sans l'interface utilisateur affichée ... ce processus est l'application Lenovo Access Connections qui offre une interface utilisateur agréable pour la gestion réseaux wifi et haut débit .. je ne l'ai jamais utilisé, je l'ai même retiré de la barre des tâches mais ça marche toujours ...

aujourd'hui, j'ai trouvé que c'était le problème et je l'ai désinstallé!

tellement amusant ..

en passant, je l'ai trouvé en faisant la chose la plus idiote possible, en prenant mon téléphone, en démarrant un enregistrement vidéo sur l'écran si je courais le gestionnaire de tâches et continuais mon travail .. une fois le focus perdu j'ai attendu une seconde, arrêté l'enregistrement et vérifié quels processus ont progressé, svcguihlpr était au sommet pendant moins d'une seconde.

j'espère que cela aidera les autres.


c'était hilarant de dire "tellement amusant" de ne pas avoir de problème xD
Motassem MK

2

J'ai eu ce problème, je pensais que le timing était aléatoire mais ce n'était pas le cas,

dans mon cas, c'était aussi trivial que: le fond d'écran change!
J'avais un diaporama comme fond d'écran et à chaque fois qu'il change, l'accent est mis sur le bureau!

J'espère que cela pourrait être le cas pour quelqu'un lisant les commentaires et que ce serait aussi simple que cela.

(Je ne sais pas si Microsoft résoudra ce problème, car je rencontre le problème avec la dernière version de Windows 10 (1803 - 17134.112))


1

J'avais constamment perdu la concentration sur la fenêtre. Lisez que quelqu'un a réussi à suivre WerSvc pose problème à l'aide d'un enregistreur. Même si c'est en fait un service de rapport d'erreurs Windows, mais j'ai essayé de le désactiver dans le Gestionnaire des tâches Windows - Services - Services.

Ensuite, le problème de perte de concentration s'est arrêté.

Vous pouvez peut-être l'essayer.


1

Ce problème m'a rendu fou! J'ai donc décidé d'écrire un programme pour me dire qui ou quoi détournait l'attention de mon programme. Vraiment ennuyeux lorsque vous jouez à Age of Empires et que le jeu se déplace sur le bureau au hasard.

Voici les résultats ....

Verizon! Oui, j'avais installé une application d'assistance Verizon et c'était le coupable!
Allez dans - Panneau de configuration -> Programmes et fonctionnalités
et désinstallez tout ce qui concerne Verizon.

J'oublie les noms des programmes, généralement commencé par un Vz ..., et il y a aussi un service IW ... Honnêtement, j'oublie car je ne pouvais pas attendre pour tuer ce qui était sur ma machine d'eux (cela m'a rendu fou ), mais lorsque vous désinstallez l'application Verizon., le problème disparaît.


1

Dans mon cas, j'ai résolu le problème en allant dans le gestionnaire de processus Windows et en vérifiant si des programmes étaient lancés et fermés en permanence. Je pouvais remarquer qu'un programme que j'avais téléchargé (je pense qu'il s'appelait Windows 8 Start) redémarrait toutes les 7 secondes. J'ai supprimé tout ce qui s'y rapportait, et cela a fonctionné!


1

J'avais le problème de la perte de focus de la fenêtre active toutes les quelques secondes. Je devrais faire un clic gauche pour continuer à taper. Exaspérant.

J'ai remarqué que le jeu de couleurs pour les zones autour des bords des fenêtres changeait à chaque fois que cela se produisait. Cela semblait être un moyen facile de voir la perte de concentration sans vraiment taper.

J'ai donc démarré le gestionnaire de tâches Windows et cliqué sur l'onglet Processus. Après avoir regardé pendant un petit moment, j'ai pu voir que le gestionnaire de bureau Adobe se détachait et figurait sur la liste simultanément avec la perte de changement de focus de la couleur.

J'ai téléchargé et réinstallé l'application de bureau Adobe Creative Cloud. (Remarque: je ne pouvais pas le désinstaller, j'ai donc juste installé le téléchargement directement sur celui existant. Il existe un programme spécial pour désinstaller Creative Cloud si cela ne fonctionne pas.) Cela a complètement résolu mon problème.

Pour ceux qui ont Creative Cloud, cela pourrait être le programme. Pour ceux qui n'en ont pas, regarder l'onglet de traitement et le changement de couleur autour des bords des fenêtres à chaque perte de focus peut vous aider à trouver le coupable.


1

J'ai utilisé le gestionnaire de tâches pour rechercher les processus d'arrière-plan, et Synaptics Touchpad était le coupable.

Le «pilote» était constamment allumé, mais un autre processus de Synaptics apparaissait toutes les quelques secondes et entraînait la perte de la mise au point.

J'ai désinstallé Synaptics et hé presto, plus de perte de concentration!


1

Dans Regedit (maintenez enfoncé le bouton Démarrer + R, puis tapez regedit), modifiez la valeur HKEY_CURRENT_USER \ Control Panel \ Desktop \ ForegroundLockTimeout de 0 à 30d40. Enregistrez et redémarrez l'ordinateur.


0

Recherchez un utilitaire de sauvegarde tel que Gladinet ou Nuance Cloud Connector. (Les deux utilisent le moteur de Gladinet et ce type de problème leur était déjà connu en 2012.) Ils exécutent une DLL sans fenêtre / sans tâche basée sur Explorer.exe.


0

Mon Samsung Galaxy S6 était en constante «mise à niveau d'Android» et lorsqu'il est connecté via USB pour le chargement, j'ai un problème de mise au point perdue toutes les 10 secondes, mais aucune fenêtre d'explorateur n'apparaît à l'avant. J'ai changé de port USB et sélectionné le mode "Charge USB" à partir du téléphone, après que ce problème de mise au point ait disparu.

Mais le problème constant de «mise à niveau d'Android» est toujours là et doit encore être résolu.


0

J'ai le même problème. Dans mon cas, il s'agissait d'un programme Windows XP exécuté sur un compte d'utilisateur standard. Il avait besoin de droits élevés d'administrateur pour fonctionner. Donc, même s'il fonctionnait en arrière-plan, je ne l'ai pas vu, il a souvent volé le focus de ma fenêtre actuelle (Windows Explorer, Firefox et autres programmes). Il est très ennuyeux. J'ai utilisé focus.exe par happy droid pour identifier le coupable. Vous pouvez également utiliser Windows Focus Logger dans le même but.


-1

Le même problème que j'ai rencontré. Mon portable est un peu vieux. J'ai 2 Go de RAM et Windows 7. Après avoir fonctionné pendant une heure, la même chose se produit à chaque fois. J'ai remarqué que ce cas survient lorsque l'ordinateur portable surchauffait. Solution: installez un logiciel RAM Cleaner automatique. Cela fait un mois après avoir installé un nettoyeur de RAM automatique et je n'ai plus jamais rencontré le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.