web-dev-qa-db-fra.com

Fenêtre active (programme) perd de manière inattendue le focus dans Windows 7

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

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

  1. J'ai observé ce comportement sur (au moins) deux ordinateurs différents, il ne s'agit donc pas d'une machine spécifique.

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

  3. Parfois, la focalisation est perdue pour de bon (vous devez cliquer sur la fenêtre pour continuer à l'utiliser), parfois, elle est simplement déplacée vers un autre processus d'arrière-plan (?) Et revient au bout de 2 à 3 secondes environ.

  4. Je n'ai rien installé de nouveau sur ces ordinateurs depuis quelques semaines (sauf pour Windows Update et d'autres programmes de mise à jour automatisés comme la mise à jour automatique du navigateur Chrome) et les problèmes certainement mentionnés 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 agaçant. Exemples:

  1. Je sélectionne du texte dans Chrome et je constate en fait que la couleur de 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'interrompt soit pendant quelques secondes (lorsque le focus est décalé), mais est définitivement arrêté (le focus est définitivement perdu).

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

J'avais l'impression que cela se produit le plus souvent dans Google Chrome. Au début, j'étais tellement sûr d'être sur le point d'accuser certaines des dernières mises à jour de ce navigateur. Mais il s’est avéré que j’ai souvent remarqué cela dans Chrome, car c’est mon programme le plus utilisé.

Est-ce que quelqu'un a ou a eu des problèmes similaires ou une idée, ce qui peut être la cause de ceci ou comment le résoudre?

21
trejder

Comme and31415 m'a conseillé, j'ai jeté un œil attentif sur ce qui se trouve dans l'onglet Startup de msconfig, mais je n'ai rien trouvé d'anormal.

Il est maintenant clair que cela est causé à 99% par un programme externe (bien que cela n’ait pas été remarqué auparavant et que je n’ai 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 de faire pression Alt+F4 immédiatement après je remarque un vol d'un foyer. Cela devrait mettre fin au processus qui pourrait causer ce focus furtif. Ensuite, je pourrais essayer d’utiliser le Process Monitor du package Sysinternals pour suivre le processus qui vient de se terminer.

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

17
trejder

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

Exemple de sortie montrant le processus commençant (vert) et se terminant (rouge)

Output sample

11
Omar Alshaker

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

Pour découvrir de tels processus, vous pouvez utiliser outils comme Enregistreur Window Focus ( 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 de code fourni par Omar Alshaker . Ne nécessite pas non plus C # 6. Nécessite .NET 3.5 ou une version plus récente.

Vous pouvez le compiler à l'aide du compilateur C # (csc.exe) fourni avec votre installation .NET Framework et exécuter le fichier exécutable obtenu pour obtenir un journal en temps réel des processus qui commencent (vert) ou se terminent (rouge). Utilisation Ctrl + C pour le terminer.


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 # dans Program.cs et compilez-le dans Program.exe:

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

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

  1. Bouton Démarrer -> Dans le champ de recherche, tapez Centre d'action -> Enter.
  2. Cliquez sur la flèche à côté de Maintenance pour développer.
  3. Sous Rechercher des solutions aux problèmes signalés, cliquez sur Paramètres.
  4. Cliquez sur Modifier les paramètres du rapport pour tous les utilisateurs.
  5. Vérifiez le bouton radio à côté de Chaque fois qu’un problème survient, me demander avant de chercher une solution.
  6. OK votre sortie, en cliquant sur OK.
4
Pampam

Le conseil d'utiliser Alt+F4 pour quitter le programme d'interruption a bien fonctionné. Au lieu de suivre le programme qui vient de se terminer avec la variable SysInternal de ProcessManager, j'ai suivi le programme comme suit:

  1. Ouvrez Task manager
  2. Prendre une capture d'écran des processus ouverts
  3. Basculer vers le navigateur, la messagerie, etc. et "attendre la perte de la focalisation"
  4. Appuyez sur Alt+F4 pour quitter le programme d'interruption
  5. Allez à Task manager et 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.exe, un programme qui commence par TP-Link Configuration tool. Il est utilisé par des clés externes WIFI-USB. Comme indiqué ici ( twcu.exe sur file.net ) et ici ( twcu.exe sur computerbase.de [ allemand] ), TP-Link Configuration tool n'est pas nécessaire pour la connexion WIFI elle-même. Je l'ai supprimé d'Autostart (msconfig> system start), j'ai redémarré l'ordinateur et il se connecte toujours au réseau WIFI sans faille - et les problèmes de perte de focus ont disparu!

3
Tobias

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

J'ai également eu le même problème avec la fenêtre de Google Chrome qui perd son focus pendant plusieurs secondes avant de revenir. En observant l'onglet 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
funk79

dans mon cas, et probablement tous les boîtiers lenovo pc/laptop, le problème était avec lenovo svcguihlpr.exe, qui commence à fonctionner toutes les quelques minutes et prend le focus sans l'interface utilisateur affichée ... Ce processus est l'application Lenovo Access Connections qui permet à Nice de gérer réseaux wifi et à large bande .. je ne l'ai jamais utilisé, je l'ai même supprimé de la barre des tâches, mais cela fonctionne toujours ...

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

tellement amusant ..

à propos, je l’ai trouvé en faisant le plus idiot possible, en prenant mon téléphone, en démarrant une vidéo en enregistrant l’écran si j’exécutais le gestionnaire de tâches, et en continuant mon travail. vérifié quels processus ont progressé, svcguihlpr était au sommet pendant moins d'une seconde ..

espérons que cela aidera les autres.

2
Oded Maimon

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: les changements de papier peint!
J'avais un diaporama en 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 qui lit les commentaires et que ce serait aussi simple que cela.

(Je ne sais pas si Microsoft parviendra à résoudre ce problème, car j’ai le problème avec la dernière version de Windows 10 (1803 - 17134.112))

2
Motassem MK

La fenêtre me perdait constamment. Lisez que quelqu'un a réussi à suivre WerSvc cause un problème en utilisant un enregistreur. Même s’il s’agit en fait d’un service de rapport d’erreurs Windows, mais j’ai essayé de le désactiver dans le Gestionnaire de tâches Windows - Services - Services.

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

Peut-être que vous pouvez l'essayer.

1
Leon

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

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, qui commencent généralement par un Vz ..., et il y a un service aussi IW ... J'oublie honnêtement puisque je ne pouvais plus attendre pour tuer tout ce qui se trouvait sur ma machine (ça me rendait fou ), mais lorsque vous désinstallez l’application Verizon., le problème disparaît.

1
Neal

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

J'ai remarqué que les couleurs des zones situées autour des fenêtres changeraient chaque fois que cela se produirait. Cela semblait être un moyen facile de voir la perte de concentration sans taper réellement.

J'ai donc lancé le gestionnaire de tâches Windows et cliqué sur l'onglet Processus. Après avoir regardé pendant un moment, je me suis rendu compte que le gestionnaire de bureau Adobe apparaissait et figurait sur la liste en même temps que la perte de la mise au point changeait de couleur.

J'ai téléchargé et réinstallé l'application de bureau Adobe Creative Cloud. (Remarque: je ne pouvais pas le désinstaller. Je viens d'installer le téléchargement directement sur le fichier 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 avec Creative Cloud, cela pourrait être le programme. Pour ceux qui n'en ont pas, regarder l'onglet de traitement et le changement de couleur sur les bords des fenêtres à chaque perte de mise au point peut vous aider à trouver le coupable.

1
JBMenzies

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

Le "pilote" était allumé en permanence, mais un autre processus de Synaptics apparaissait toutes les quelques secondes et entraînait la perte du focus.

J'ai désinstallé Synaptics et hop, tu ne perds plus le focus!

1
Cameron

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

1
Heikki Sonninen

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. J'ai remarqué qu'un programme que j'ai 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
Ghais

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
tanitani

Mon Samsung Galaxy S6 était en permanence "Mise à niveau d'Android" et lorsqu'il est connecté via USB pour le chargement, j'ai un problème de perte de mise au point toutes les 10 secondes, mais aucune fenêtre de l'Explorateur n'est apparue. J'ai changé de port USB et sélectionné le mode "Charge USB" à partir du téléphone, après la disparition de ce problème de mise au point.

Mais le problème constant "Mise à niveau Android" est toujours là et doit encore être résolu.

0
TarmoPikaro

J'ai le même problème. Mon cas, c’était un programme Windows XP exécuté sur un compte utilisateur standard. Il avait besoin de droits élevés d'administrateur pour s'exécuter. Ainsi, même s’il fonctionnait en arrière-plan, je ne le voyais pas, mais volait fréquemment le focus de ma fenêtre actuelle (Windows Explorer, Firefox et d’autres programmes). Il est très ennuyeux. J'ai utilisé le fichier focus.exe de joyeux droid pour identifier le coupable. Aussi, vous pouvez utiliser Windows Focus Logger dans le même but.

0
Kamal