Активное окно (программа) неожиданно теряет фокус в Windows 7

Что-то смещает (крадет) фокус из моего активного окна (активной программы) в моей Windows, как я сейчас использую.

У меня та же проблема, которая описана в этом вопросе, за некоторыми исключениями:

  1. Я наблюдал это поведение (по крайней мере) на двух разных компьютерах, так что это не зависит от конкретной машины.

  2. На одном из упомянутых компьютеров установлена ​​Windows 7 HE 64-bit, на другом - Windows 7 Pro 32-bit, поэтому эта проблема не относится к конкретной версии Windows или конкретной аппаратной платформе.

  3. Иногда фокус теряется навсегда (приходится нажимать на окно, чтобы продолжить его использовать), иногда он просто переносится на какой-то другой фоновый процесс (?) И возвращается через 2-3 секунды.

  4. Я не устанавливал ничего нового ни на один из этих компьютеров в течение последних нескольких недель (за исключением Центра обновления Windows и других автоматических обновлений, таких как автообновление браузера Chrome), и, конечно же, упомянутые проблемы начали возникать через много дней после последней установки.

Текущее поведение моего компьютера действительно странно, и все это становится раздражающим. Примеры:

  1. Я выделяю некоторый текст в Chrome и на самом деле вижу, что цвет выделения изменяется с синего (выделение в активных окнах) на серый (выделение в неактивном окне).

  2. Я редактирую какой-то документ в Word, Notepad++ или по электронной почте в Gmail в Chrome, и процесс редактирования либо останавливается на несколько секунд (когда смещается фокус), потому что он окончательно завершен (фокус потерян навсегда).

У меня есть активный, обновленный и работающий Microsoft Security Essentials, и он не сообщает ничего необычного.

У меня было ощущение, что это чаще всего происходит в Google Chrome. Сначала я был настолько уверен, что был почти готов обвинить некоторые из последних обновлений этого браузера. Но оказалось, что я заметил это необычно часто в Chrome, потому что это моя наиболее часто используемая программа.

У кого-нибудь есть или были подобные проблемы, или есть идеи, что может быть причиной этого или как это исправить?

18 ответов

Решение

Как and31415 посоветовал мне, я внимательно посмотрел на то, что в моем Startup вкладка msconfig программа, но ничего необычного не нашел.

Теперь ясно, что это на 99% вызвано какой-то внешней программой (хотя раньше этого не замечали и хотя недавно я не устанавливал ничего нового), а не Windows. Это самый важный момент для меня здесь.

Я немного погуглил и получил несколько идей / советов, а именно, что я должен попытаться нажать Alt+F4 сразу после того, как я замечу, что у меня сфокусирован фокус. Это должно завершить процесс, который может вызвать скрытую фокусировку. Тогда я могу попытаться использовать Process Monitor от Sysinternals пакет для отслеживания процесса, который только что вышел.

Это может дать мне некоторое представление о том, что вызывает эту проблему.

Я запрограммировал программу на C# для мониторинга колеблющихся процессов. Вот код, если кто-то должен выяснить, какой процесс вызывает эту проблему.

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

Выходной образец, показывающий процесс, начинающийся (зеленый) и заканчивающийся (красный)

Выходной образец

Фокус, вероятно, украден ошибочной фоновой задачей. Он открывает окно, которое крадет фокус, и очень быстро закрывается, но фокус не возвращается. В последнее время в Microsoft Office была такая ошибка .

Чтобы обнаружить такие процессы, вы можете использовать такие инструменты, как Window Focus Logger ( зеркало ) или пользовательскую программу на C#, похожую на 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();
            }
        }
    }
}

Полированная и исправленная версия кода, предоставленная Омаром Альшакером . Также не требуется C# 6. Требуется .NET 3.5 или новее.

Вы можете скомпилировать его с помощью компилятора C# ( csc.exe ), который поставляется с вашей установкой .NET Framework и запускает полученный исполняемый файл, чтобы получить журнал в реальном времени процессов, которые начинаются (зеленый) или заканчиваются (красный). Используйте Ctrl + C, чтобы завершить его.


Чтобы найти компилятор, запустите where /R %windir%\Microsoft.NET csc.exe , Выберите тот из последней установленной версии .NET, независимо от того, 32b или 64b. Сохраните код C# в Program.cs и скомпилировать Program.exe :

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

В моем случае это было то, что wermgr.exe (отчеты об ошибках Windows) запускался снова и снова. Я следовал приведенному ниже решению, чтобы остановить его автоматический запуск, и это решило проблему.

  1. Кнопка "Пуск" -> В поле поиска введите " Центр действий" -> " Ввод".
  2. Нажмите на стрелку рядом с " Обслуживание", чтобы развернуть.
  3. В разделе " Проверка решений для отчетов о проблемах" нажмите " Настройки".
  4. Нажмите на Изменить параметры отчета для всех пользователей.
  5. Установите переключатель рядом с Каждый раз, когда возникает проблема, спрашивайте меня, прежде чем проверять решение.
  6. ОК выход, нажав ОК.

У меня была эта проблема, я думал, что время было случайным, но это не было,

в моем случае это было так же тривиально, как: смена обоев!
У меня было слайд-шоу в качестве обоев, и каждый раз, когда оно меняется, фокус переходит на рабочий стол!

Я надеюсь, что это может иметь место для кого-то, кто читает комментарии, и это будет так же просто, как это.

(Я не знаю, исправит ли когда-нибудь Microsoft это, так как у меня проблема с последней сборкой Windows 10 (1803 - 17134.112))

Я удалил NMBgMonitor.exe от запуска сервисов для решения проблемы.

У меня также была та же проблема с окном Google Chrome, которое теряло фокус на несколько секунд, а затем возвращалось. Наблюдая за вкладкой служб диспетчера задач, я заметил, что всякий раз, когда фокус теряется, NMBgMonitor был активен (это как-то связано с Nero).

Подсказка с использованием Alt+F4 Для выхода из программы прерывания работали хорошо. Вместо отслеживания только что вышедшей программы SysInternal"s ProcessManagerЯ проследил программу следующим образом:

  1. открыто Task manager
  2. Сделайте скриншот открытых процессов
  3. Переключитесь на Браузер, Почту и т. Д. И "дождитесь потери фокуса"
  4. Нажмите Alt+F4 выйти из программы прерывания
  5. Идти к Task manager и сравнить открытые процессы со скриншотом
  6. Теперь "отсутствующий" процесс вызвал проблему

В моем случае это было twcu.exe, программа, которая начинается с TP-Link Configuration tool, Используется внешними WIFI-USB флешками. Как сообщается здесь ( twcu.exe на file.net) и здесь ( twcu.exe на computerbase.de [немецкий]), TP-Link Configuration tool не требуется для самого соединения WIFI. Я удалил его из автозапуска (msconfig > system start), перезагрузил компьютер, и он по-прежнему подключается к WIFI безупречно - и проблемы потери фокуса исчезли!

В моем случае, и, вероятно, во всех случаях, связанных с ПК / ноутбуком lenovo, проблема была в lenovo svcguihlpr.exe, который начинает работать каждые несколько минут и фокусируется без отображения интерфейса... этот процесс представляет собой приложение Lenovo Access Connections, которое предоставляет приятный пользовательский интерфейс для управления Wi-Fi и широкополосные сети.. я никогда не использовал его, я даже удалил его из панели задач, но он все еще работает...

сегодня я обнаружил, что это проблема, и удалил ее!

так весело..

кстати, я нашел это, выполнив самую идиотскую вещь, какую только возможно, взяв свой телефон, запустив видеозапись на экране, где я запускаю диспетчер задач, и продолжаю свою работу.. как только потерял фокус, я ждал секунду, остановил запись проверил, какие процессы пошли вверх, svcguihlpr был на вершине меньше секунды.

надеюсь, это поможет другим.

У меня была проблема, когда активное окно теряло фокус каждые несколько секунд. Я должен был бы щелкнуть левой кнопкой мыши, чтобы продолжить печатать. Maddening.

Я заметил, что цветовая схема областей вокруг краев оконных окон будет меняться каждый раз, когда это происходит. Это казалось простым способом увидеть потерю фокуса без фактического набора текста.

Итак, я запустил диспетчер задач Windows и нажал на вкладку процессов. Посмотрев немного, я увидел, что менеджер рабочего стола Adobe отключился и попал в список одновременно с потерей фокуса изменением цвета.

Я скачал и переустановил настольное приложение Adobe Creative Cloud. (Примечание: я не смог удалить его, поэтому я установил загрузку прямо поверх существующей. Существует специальная программа для удаления Creative Cloud, если она не работает.) Это полностью излечило мою проблему.

Для тех, у кого есть Creative Cloud, это может быть программа. Для тех, у кого нет, наблюдение за вкладкой обработки и изменение цвета по краям окон при каждой потере фокуса может помочь вам найти виновника.

В моем случае я исправил проблему, перейдя в диспетчер процессов Windows и проверив, запускаются ли и постоянно ли закрываются какие-либо программы. Я мог заметить, что загруженная мною программа (кажется, она называлась Windows 8 Start) перезапускалась каждые 7 секунд. Я удалил все, что с этим связано, и это сработало!

Эта проблема сводила меня с ума! Поэтому я решил написать программу, чтобы сказать мне, кто или что отвлекает внимание от моей программы. Очень раздражает, когда вы играете в Age of Empires и игра случайно попадает на рабочий стол.

Вот выводы....

Verizon! Да, я установил какое-то вспомогательное приложение Verizon, и оно было виновником!
Зайдите в - Панель управления -> Программы и компоненты
и удалите все, что связано с Verizon.

Я забываю названия программ, обычно начинающихся с Vz... и тоже есть служба IW... Честно говоря, я забыл, потому что не мог дождаться, чтобы убить из них все, что было на моей машине (это сводило меня с ума), но при удалении приложения Verizon проблема исчезает.

Я использовал диспетчер задач, чтобы искать фоновые процессы, и Synaptics Touchpad был виновником.

"Драйвер" был включен постоянно, но каждые несколько секунд появлялся еще один процесс, запускаемый Synaptics, что приводило к потере фокуса.

Я удалил Synaptics и эй Presto, больше не теряя внимания!

В Regedit (удерживая кнопку "Пуск" +R, затем введите regedit), измените значение HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout с 0 на 30d40 . Сохраните и перезагрузите компьютер.

Я тоже постоянно терял фокус. Читайте, что кому-то удалось отследить, что WerSvc вызывает проблему с помощью регистратора. Даже если это на самом деле служба отчетов об ошибках Windows, но я попытался отключить ее в диспетчере задач Windows - Службы - Службы.

Тогда проблема потери фокуса прекратилась.

Может быть, вы, ребята, можете попробовать это.

У меня та же проблема. В моем случае это была программа для Windows XP, которая запускалась под стандартной учетной записью пользователя. Ему нужны были повышенные права администратора для запуска. Так что, хотя он работал в фоновом режиме, я не видел его, он часто крал фокус моего текущего окна (проводник Windows, Firefox и другие программы). Это очень раздражает. Я использовал focus.exe счастливым дроидом, чтобы определить виновника. Также вы можете использовать Windows Focus Logger для той же цели.

Мой Samsung Galaxy S6 постоянно находился в состоянии "Обновление Android", и при подключении через USB для зарядки у меня возникали проблемы с фокусировкой каждые 10 секунд, но окно обозревателя не появлялось впереди. После того, как проблема с фокусировкой исчезла, я изменил порт USB и выбрал режим "Зарядка от USB".

Но постоянная проблема "Обновление Android" все еще существует и должна быть решена.

Проверьте наличие утилиты резервного копирования, такой как Gladinet или Nuance Cloud Connector. (Оба используют движок Gladinet, и такая проблема была им известна уже в 2012 году.) Они запускают dll без окон / без задач, основанное на Explorer.exe.

С той же проблемой я столкнулся. Мой ноутбук немного стар У меня 2 ГБ оперативной памяти и окно 7. После работы в течение часа это происходит каждый раз. Я заметил, что этот случай возникает, когда ноутбук перегревается. Решение: Установите программное обеспечение для автоматической очистки RAM. Прошел месяц после установки автоматического очистителя оперативной памяти, и я никогда не сталкивался с проблемой снова.

Другие вопросы по тегам