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


23

Щось зрушує (краде) фокус з мого активного вікна (активна програма) у моїй Windows, як я зараз його використовую.

У мене така ж проблема, як описана в цьому питанні , за кількома винятками:

  1. Я спостерігав таку поведінку на (принаймні) двох різних комп’ютерах, тому це не є специфічним для машини.

  2. Один із згаданих комп'ютерів має Windows 7 HE 64-розрядний, інший має 32-розрядний Windows 7 Pro, тому ця проблема не стосується конкретної версії Windows або певної апаратної платформи.

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

  4. Я не встановлював нічого нового на жодному з цих комп'ютерів протягом останніх кількох тижнів (за винятком Windows Update та інших автоматизованих оновлень, таких як автоматичне оновлення браузера Chrome), і, звичайно, згадані проблеми почали виникати через багато днів після останньої установки .

Поточна поведінка мого комп’ютера насправді дивна, і вся справа стає дратівливою. Приклади:

  1. Я вибираю текст у Chrome і фактично бачу, що колір виділення змінюється від синього (виділення в активних вікнах) на сірого (виділення у неактивному вікні).

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

У мене є активні, оновлені та працюючі Microsoft Security Essentials, і це не повідомляє нічого незвичайного.

У мене було відчуття, що це найчастіше трапляється в Google Chrome. Спочатку я був настільки впевнений, що майже готовий був звинуватити деякі останні оновлення цього браузера. Але виявилося, що я помічаю це незвично часто в Chrome, тому що це моя найчастіше використовується програма.

Хтось має або мав подібні проблеми чи має якусь ідею, що може спричинити це чи як це виправити?


2
Чи трапляється проблема в безпечному режимі (з мережею чи без неї)? Запустіть msconfigі виберіть вкладку « Запуск ». Які програми існують?
і31415

1
Описану проблему дуже важко «зловити», оскільки це трапляється не дуже часто. Наприклад - жодних слідів за останні два дні. Тож мені доведеться працювати днями в безпечному режимі щоб спробувати "зловити" це. Але, дякую за ідею. Також дивіться мою відповідь нижче.
трейдер

Відповіді:


17

Як і радив мені 31415 , я уважно подивився, що є в моїй Startupвкладці msconfigпрограми, але не знайшов нічого незвичайного.

Зараз зрозуміло, що це на 99% викликано якоюсь зовнішньою програмою (хоча раніше не помічав, і хоча нещодавно я не встановив нічого нового), а не Windows. Це для мене найважливіший момент.

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

Це може дати мені деяке уявлення про те, що викликає цю проблему.


1
З msconfigвиберіть Services вкладку і включіть Приховати всі служби Microsoft . Перевірте це теж. Ось офіційна стаття KB, яка може бути корисною: Виконайте чистий запуск, щоб визначити, чи впливають фонові програми на вашу гру чи програму . Крім того, навіть якщо ви не бачите нічого незвичайного, я думаю, що було б непогано перерахувати всі отримані сторонніми предметами та послугами.
і31415

@trejder, чи потрібно було вам завантажити technet.microsoft.com/en-us/sysinternals/bb896645 чи щось інше, чи ви маєте на увазі вбудовану функцію Windows, яка дозволяє переглянути список процесів, які нещодавно вийшли? Спасибі!
Райан

@Ryan Nope, як у відповідь - Process Monitorз Sysinternalsпакета.
трейдер

2
Під час використання Process Monitorперейдіть до меню Фільтр і додайте наступний фільтр: Операція не є Process ExitВиключити. Мій драйвер тачпада кидав помилку і намагався повідомити про це за допомогою Windows Reporting Reporting. Дякую% #! @ За ці запитання та відповіді, інакше я знищив би свій ноутбук.
Дарил Ван Сіттерт

У мене просто так трапилося. Виявилося C: \ Program Files (x86) \ ViveSetup \ PCClient \ HTCVRMarketplaceUserContextHelper.exe - програма для HTC Vive. Я видалив весь каталог. Я підозрюю, що це проблема з їх оновленням раніше цього тижня
MickyD

12

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

Вибірка виводу, що показує процес, що починається (зелений) і закінчується (червоний)

Вихідний зразок


11
Гарна ідея та приємний фрагмент коду. Але оскільки це сайт для користувачів , а не для розробників (це Super User, а не переповнення стека), то вам слід додати пояснення щодо того, як не-C # -developer здатний запускати ваш код?
трейдер

Я створив вдосконалену версію цього і вклав його у власну відповідь , включаючи відповіді на ваші запитання, @trejder.
Палець

ймовірно, перетворите це в PowerShell, який не потребує компілятора C #?
phuclv

@phuclv впевнено йти вперед: D
Омар Альшакер

7

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

Цей код дає мені помилку "Не вдалося знайти тип або простір імен" Процес ". Тому мені потрібно було додати посилання на System.dll.
Вілсон

Дивно, @Wilson. Яку версію csc.exe ви використовуєте?
Палець

1
До речі, командний рядок буде csc.exe -reference:System.dll Program.csтоді. Див. -Референції C # компілятор параметрів документів .
Палець

У менеMicrosoft (R) Visual C# Compiler version 2.6.0.62329 (5429b35d)
Вілсон

Ця версія, здається, виходить зі старої збірки VS 2017 (або її інструментів для збирання). Я не можу відтворити проблему з поточним VS 2017 ( csc -version15.6.4 , 2.7.0.62715 (db02128e)). Все ж дякую за те, що поділилися проблемою та її вирішенням.
Палець

4

У моєму випадку сталося, що wermgr.exe (звітування про помилки Windows) запускався знову і знову. Я дотримувався наведеного нижче рішення, щоб зупинити його автоматичне запуск, і це вирішило проблему.

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

3

Підказка з використанням Alt+F4для виходу з програми переривання спрацювала добре. Замість того, щоб простежити щойно що вийшла програму за допомогою SysInternals 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

NMBgMonitor.exeЩоб вирішити проблему, я видалений із служб запуску.

У мене також була така ж проблема, коли вікно Google Chrome втрачало фокус протягом декількох секунд, а потім поверталася. Переглядаючи вкладку служб диспетчера завдань, я помітив, що кожного разу, коли втрачається фокус, NMBgMonitor був активним (це має щось спільне з Nero).


2

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

сьогодні я виявив, що це питання, і видалив його!

так весело..

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

сподіваюся, що це допоможе іншим.


було весело сказати "так весело" про те, щоб не мати проблеми xD
Motassem MK

2

У мене була ця проблема, я вважав, що терміни були випадковими, але це не було,

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

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

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


1

У мене постійно було втрачатися фокус вікон. Прочитайте, що комусь вдалося відстежити WerSvc викликає проблеми за допомогою реєстратора. Навіть якщо це насправді служба звітування про помилки Windows, але я намагався відключити її в диспетчері завдань Windows - Сервіси - Послуги.

Тоді проблема втрати фокусу припинилася.

Можливо, ви, хлопці, можете спробувати.


1

Ця проблема зводила мене з розуму! Тому я вирішив написати програму, щоб сказати, хто чи що відводить фокус від моєї програми. По-справжньому дратує, коли ви граєте Age of Empires і гра йде на робочий стіл випадковим чином.

Ось висновки….

Verizon! Так, я встановив кілька помічників Verizon, і це був винуватець!
Зайдіть у - Панель управління -> Програми та функції
та видаліть все, що стосується Verizon.

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


1

У своєму випадку я вирішив проблему, перейшовши до менеджера процесів Windows та перевіривши, чи якісь програми запускаються та закриваються постійно. Я міг помітити, що програма, яку я завантажила (я думаю, це називалася Windows 8 start), перезапускалася кожні 7 секунд. Я видалив усе пов’язане з цим, і воно спрацювало!


1

У мене виникала проблема, коли активне вікно втрачало фокус кожні кілька секунд. Мені доведеться клацнути лівою кнопкою миші, щоб продовжувати набирати текст. Божевілля.

Я помітив, що кольорова гамма областей навколо країв вікон вікон змінюватиметься кожного разу, коли це відбудеться. Здавалося, що це простий спосіб побачити втрату фокусу без фактичного набору тексту.

Отже, я запустив менеджер завдань Windows і натиснув на вкладку процесів. Нещодавно переглянувши, я помітив, що менеджер робочих столів Adobe вимикає та перебуває у списку одночасно із втратою фокусу зміною кольору.

Я завантажив і знову встановив настільний додаток Adobe Creative Cloud. (Примітка. Не вдалося її видалити, тому я просто встановив завантаження прямо над існуючим. Існує спеціальна програма для видалення Creative Cloud, якщо це не працює.) Це повністю вилікувало мою проблему.

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


1

Я використовував менеджер завдань, щоб шукати фонові процеси, а винуватцем Synaptics Touchpad.

"Водій" постійно працював, але інший процес Synaptics вискакував кожні кілька секунд і спричиняв втрату уваги.

Я видалив Synaptics і ей престо, більше не втрачаючи уваги!


1

У Regedit (утримуйте кнопку запуску + R, а потім введіть regedit) змініть значення HKEY_CURRENT_USER \ Панель управління \ Desktop \ ForegroundLockTimeout від 0 до 30d40. Збережіть і перезавантажте комп'ютер.


0

Перевірте наявність утиліти для резервного копіювання, наприклад Gladinet або Nuance Cloud Connector. (Обидва використовують двигун Gladinet, і така проблема була їм відома ще в 2012 році.) Вони працюють без вікон / без заданих dll на базі Explorer.exe.


0

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

Але постійна проблема "Оновлення Android" все ще існує і її потрібно вирішити ще.


0

У мене така ж проблема. У моєму випадку це була програма Windows XP, яка працювала на стандартному обліковому записі користувача. Для запуску потрібні були підвищені права адміністратора. Тому, хоч він працював у фоновому режимі, я цього не бачив, він часто вкрадав фокус мого поточного вікна (windows explorer, firefox та інші програми). Це дуже дратує. Я використовував focus.exe щасливим дроїдом, щоб визначити винуватця. Також для цієї ж мети можна використовувати Windows Focus Logger .


-1

Та сама проблема, з якою я стикався. Мій ноутбук трохи старий. У мене немає 2 Гб оперативної пам’яті та вікно 7. Після запуску протягом години це те саме відбувається щоразу. Я помітив, що цей випадок виникає, коли ноутбук перегрівався. Рішення: Встановіть програмне забезпечення для автоматичного очищення оперативної пам'яті. Пройшов місяць після встановлення автоматичного очищувача оперативної пам'яті, і я більше не стикався з проблемою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.