18

Что-то смещает (крадет) фокус из моего активного окна (активной программы) в моей 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, потому что это моя наиболее часто используемая программа.

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

17 ответов17

15

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

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

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

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

10

Я запрограммировал программу на 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);
            }
        }
    }
}

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

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

5

Фокус, вероятно, украден ошибочной фоновой задачей. Он открывает окно, которое крадет фокус, и очень быстро закрывается, но фокус не возвращается. В последнее время в 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
4

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

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

Я удалил NMBgMonitor.exe из службы запуска, чтобы решить проблему.

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

2

Подсказка с использованием Alt+F4 для выхода из программы прерывания работала хорошо. Вместо того, чтобы отследить только что завершившуюся программу с помощью SysInternal 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 - и проблемы с потерей фокуса исчезли!

2

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

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

так весело..

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

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

2

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

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

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

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

1

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

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

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

1

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

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

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

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

1

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

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

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

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

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

1

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

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

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

1

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

1

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

0

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

0

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .