Das aktive Fenster (Programm) verliert in Windows 7 unerwartet den Fokus

23

Etwas verschiebt (stiehlt) den Fokus von meinem aktiven Fenster (aktives Programm) in meinem Windows, da ich es gerade verwende.

Ich habe das gleiche Problem wie in dieser Frage beschrieben , mit ein paar Ausnahmen:

  1. Ich habe dieses Verhalten auf (mindestens) zwei verschiedenen Computern beobachtet, daher ist dies nicht maschinenspezifisch.

  2. Auf einem der genannten Computer ist Windows 7 HE 64-Bit und auf einem anderen Windows 7 Pro 32-Bit installiert. Daher ist dieses Problem nicht spezifisch für eine bestimmte Windows-Version oder eine bestimmte Hardwareplattform.

  3. Manchmal geht der Fokus für immer verloren (muss auf das Fenster klicken, um es weiter zu verwenden), manchmal wird es einfach auf einen anderen Hintergrundprozess verschoben (?) Und kehrt nach ca. 2-3 Sekunden zurück.

  4. Ich habe in den letzten Wochen auf keinem dieser Computer etwas Neues installiert (mit Ausnahme von Windows Update und anderen automatisierten Aktualisierungen wie der automatischen Aktualisierung des Chrome-Browsers) und mit Sicherheit erwähnt, dass Probleme viele Tage nach der letzten Installation aufgetreten sind .

Das aktuelle Verhalten meines Computers ist wirklich seltsam und das Ganze wird nervig. Beispiele:

  1. Ich wähle Text in Chrome aus und sehe tatsächlich, dass sich die Auswahlfarbe von Blau (Auswahl in einem aktiven Fenster) zu Grau (Auswahl in einem inaktiven Fenster) ändert.

  2. Ich bearbeite ein Dokument in Word, Notepad ++ oder eine E-Mail in Google Mail in Chrome und der Bearbeitungsvorgang wird für einige Sekunden angehalten (wenn sich der Fokus verschiebt), da er permanent beendet wird (Fokus endgültig verloren).

Ich habe Microsoft Security Essentials aktiv, aktualisiert und arbeite daran, und es werden keine ungewöhnlichen Ereignisse gemeldet.

Ich hatte das Gefühl, dass es in Google Chrome am häufigsten vorkommt. Zuerst war ich mir so sicher, dass ich fast bereit war, einige der letzten Aktualisierungen dieses Browsers zu beschuldigen. Es stellte sich jedoch heraus, dass ich dies in Chrome ungewöhnlich oft bemerkte, da dies mein am häufigsten verwendetes Programm ist.

Hat oder hatte jemand ähnliche Probleme oder eine Idee, was dies verursachen kann oder wie man dies behebt?

trejder
quelle
2
Tritt das Problem auch im abgesicherten Modus (mit oder ohne Netzwerk) auf? Starten Sie msconfigund wählen Sie die Registerkarte Start . Welche Programme gibt es?
And31415
1
Es ist sehr schwer, das beschriebene Problem zu "fangen", da es nicht zu oft auftritt. Zum Beispiel - seit zwei Tagen keine Spur. Ich müsste also Tage im abgesicherten Modus arbeiten , um zu versuchen, dies zu "fangen". Aber danke für die Idee. Siehe auch meine Antwort unten.
Trejder

Antworten:

17

Als and31415 mir geraten, nahm ich einen sorgfältigen Blick auf das, was in meinem ist StartupRegisterkarte msconfigProgramm, fand aber nichts Ungewöhnliches.

Es ist jetzt klar, dass dies zu 99% durch ein externes Programm verursacht wird (obwohl es vorher nicht bemerkt wurde und obwohl ich in letzter Zeit nichts Neues installiert habe), nicht durch Windows. Dies ist der wichtigste Punkt für mich hier.

Ich googelte ein bisschen mehr und bekam ein paar Ideen / Ratschläge, nämlich, dass ich versuchen sollte, Alt+ zu drücken, sobald ich einen Fokusverlust bemerke F4. Dies sollte den Prozess beenden, der dazu führen könnte, dass der Fokus ausgeblendet wird. Dann kann ich versuchen, Process Monitoraus SysinternalsPaket zu verwenden, um den Prozess zu verfolgen, der gerade beendet wurde.

Dies kann mir eine Vorstellung davon geben, was dieses Problem verursacht.

trejder
quelle
1
Von msconfigwählen Sie die Dienste Registerkarte und aktivieren Sie die Ausblenden alle Microsoft - Dienste . Überprüfen Sie das auch. Hier ist ein offizieller KB-Artikel, der nützlich sein kann: Führen Sie einen sauberen Start durch, um festzustellen, ob Hintergrundprogramme Ihr Spiel oder Programm stören . Auch wenn Sie nichts Ungewöhnliches bemerken, ist es meiner Meinung nach eine gute Idee, alle Startobjekte und Dienste von Drittanbietern aufzulisten, die Sie erhalten haben.
And31415
@trejder, mussten Sie technet.microsoft.com/en-us/sysinternals/bb896645 oder etwas anderes herunterladen , oder beziehen Sie sich auf eine integrierte Windows-Funktion, mit der Sie eine Liste der kürzlich beendeten Prozesse anzeigen können? Vielen Dank!
Ryan
@ Ryan Nope, wie in der Antwort - Process Monitoraus dem SysinternalsPaket.
Trejder
2
Rufen Sie bei Verwendung Process Monitordas Menü Filter auf und fügen Sie den folgenden Filter hinzu: Vorgang ist Process Exitdann nicht ausgeschlossen . Mein Touchpad-Treiber hat einen Fehler ausgegeben und versucht, ihn mit der Windows-Problemmeldung zu melden. Vielen Dank an% #! @ Für diese Q & A-Sites, sonst hätte ich meinen Laptop zerstört.
Daryl Van Sittert
Mir ist das gerade passiert. Es stellte sich heraus, dass es sich um C: \ Programme (x86) \ ViveSetup \ PCClient \ HTCVRMarketplaceUserContextHelper.exe handelt - ein Programm für das HTC Vive. Ich habe das gesamte Verzeichnis gelöscht. Ich vermute, es ist ein Problem mit ihrem Update Anfang dieser Woche
MickyD
12

Ich habe ein C # -Programm programmiert, um schwankende Prozesse zu überwachen. Hier ist der Code, wenn jemand herausfinden muss, welcher Prozess dieses Problem verursacht.

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

Ausgabebeispiel mit Prozessstart (grün) und -ende (rot)

Ausgabebeispiel

Omar Alshaker
quelle
11
Gute Idee und schönes Stück Code. Da dies jedoch eine Site für Benutzer und nicht für Entwickler ist (dies ist Superuser, nicht Stack Overflow), sollten Sie eine Erklärung hinzufügen, wie Code ausgeführt werden kann, der kein C # -Entwickler ist.
Trejder
Ich habe eine verbesserte Version davon erstellt und sie in meine eigene Antwort eingefügt, einschließlich der Antworten auf Ihre Fragen, @trejder.
Palec
wahrscheinlich in PowerShell konvertieren, die keinen C # -Compiler benötigt?
Phuclv
@phuclv gehen Sie sicher voran: D
Omar Alshaker
7

Der Fokus wird wahrscheinlich von einer fehlerhaften Hintergrundaufgabe gestohlen. Es öffnet ein Fenster, das den Fokus stiehlt, und es wird sehr schnell geschlossen, aber der Fokus kehrt nicht zurück. In letzter Zeit hatte Microsoft Office einen solchen Fehler .

Um solche Prozesse zu erkennen, können Sie Tools wie Window Focus Logger ( Mirror ) oder ein benutzerdefiniertes C # -Programm verwenden, das Process Monitor ähnelt :

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

Polierte und fehlerbereinigte Version des von Omar Alshaker bereitgestellten Codes . Benötigt auch kein C # 6. Benötigt .NET 3.5 oder neuer.

Sie können es mit dem C # -Compiler ( csc.exe) kompilieren, der mit Ihrer .NET Framework-Installation geliefert wird, und die resultierende ausführbare Datei ausführen, um ein Echtzeitprotokoll der Prozesse zu erhalten, die beginnen (grün) oder enden (rot). Verwenden Sie Ctrl+, Cum es zu beenden.


Führen Sie den folgenden Befehl aus, um den Compiler zu finden where /R %windir%\Microsoft.NET csc.exe. Wählen Sie die neueste installierte .NET-Version aus, egal ob 32b oder 64b. Speichern Sie den C # -Code in Program.csund kompilieren Sie ihn unter Program.exe:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Program.cs
Palec
quelle
Dieser Code gibt mir den Fehler "Der Typ oder der Namespace 'Process' konnte nicht gefunden werden". Also musste ich einen Verweis auf System.dll hinzufügen.
Wilson
Seltsam, @ Wilson. Welche Version von csc.exe verwenden Sie?
Palec
1
Übrigens wird die Kommandozeile csc.exe -reference:System.dll Program.csdann sein. Siehe -reference C # -Compileroptionsdokumente .
Palec
Ich habeMicrosoft (R) Visual C# Compiler version 2.6.0.62329 (5429b35d)
Wilson
Diese Version scheint aus einem älteren Build von VS 2017 (oder seinen Build-Tools) zu stammen. Ich kann das Problem mit dem aktuellen VS 2017 (15.6.4, csc -version2.7.0.62715 (db02128e)) nicht reproduzieren . Trotzdem vielen Dank für das Teilen des Problems und seiner Lösung.
Palec
4

In meinem Fall wurde wermgr.exe (Windows error reporting) immer wieder gestartet. Ich habe die folgende Lösung befolgt, um zu verhindern, dass es automatisch gestartet wird, und das hat das Problem gelöst.

  1. Start button -> Geben Sie im Suchfeld Action center -> ein Enter.
  2. Klicken Sie zum Erweitern auf den Pfeil neben Wartung .
  3. Klicken Sie unter Nach Lösungen für Problemmeldungen suchen auf Einstellungen .
  4. Klicken Sie auf Berichtseinstellungen für alle Benutzer ändern .
  5. Aktivieren Sie das Optionsfeld neben Jedes Mal, wenn ein Problem auftritt, fragen Sie mich, bevor Sie nach einer Lösung suchen .
  6. Klicken Sie auf OK, um den Ausgang zu bestätigen.
Pam pam
quelle
3

Der Hinweis mit Alt+F4zum Beenden des Unterbrechungsprogramms hat gut funktioniert. Anstatt das gerade verlassene Programm mit SysInternal's zu verfolgen ProcessManager, habe ich das Programm folgendermaßen verfolgt:

  1. Öffnen Task manager
  2. Machen Sie einen Screenshot von offenen Prozessen
  3. Wechseln Sie zu Browser, Mail usw. und "Warte auf Fokusverlust"
  4. Drücken Sie Alt+F4, um das unterbrechende Programm zu verlassen
  5. Gehe zu Task managerund vergleiche offene Prozesse mit dem Screenshot
  6. Der jetzt "fehlende" Prozess verursachte das Problem

In meinem Fall war es twcu.exeein Programm, das mit beginnt TP-Link Configuration tool. Es wird von externen WIFI-USB-Sticks verwendet. Wie hier ( twcu.exe bei file.net ) und hier ( twcu.exe bei computerbase.de ) gemeldet , TP-Link Configuration toolwird für die WLAN-Verbindung selbst nicht benötigt. Ich habe es aus Autostart ( msconfig> system start) entfernt, den Computer neu gestartet und es stellt immer noch eine einwandfreie Verbindung zum WIFI her - und die Probleme mit dem Fokusverlust sind weg!

Tobias
quelle
2

Ich habe mich NMBgMonitor.exeaus den Startdiensten zurückgezogen, um das Problem zu lösen.

Ich hatte auch das gleiche Problem, als das Google Chrome-Fenster für einige Sekunden den Fokus verlor und dann zurückkehrte. Auf der Registerkarte Dienste des Task-Managers stellte ich fest, dass NMBgMonitor immer dann aktiv war, wenn der Fokus verloren ging (was etwas mit Nero zu tun hat).

funk79
quelle
2

In meinem Fall und wahrscheinlich in allen Fällen von Lenovo PCs / Laptops gab es ein Problem mit lenovo svcguihlpr.exe, die alle paar Minuten zu arbeiten anfingen und den Fokus ohne die angezeigte Benutzeroberfläche aufnahmen WiFi und Breitband-Netzwerke .. Ich habe es nie benutzt, ich habe es sogar aus der Taskleiste entfernt, aber es funktioniert immer noch ...

heute habe ich festgestellt, dass es das problem war und es deinstalliert!

so viel Spaß..

Übrigens, ich fand es, indem ich das Idiotischste machte, das möglich war, mein Telefon nahm, eine Videoaufnahme auf dem Bildschirm startete, wo ich den Task-Manager ausführte, und meine Arbeit fortsetzte. Sobald der Fokus verloren ging, wartete ich eine Sekunde, stoppte die Aufzeichnung und überprüfte, welche Prozesse voranschritten, svcguihlpr war weniger als eine Sekunde lang an der Spitze.

hoffe, es wird anderen helfen.

Oded Maimon
quelle
es war lustig zu sagen "so viel Spaß", kein Problem zu haben xD
Motassem MK
2

Ich hatte dieses Problem, ich dachte das Timing war zufällig, aber es war nicht,

in meinem Fall war es so trivial wie: Tapetenwechsel!
Ich hatte eine Diashow als Hintergrundbild und jedes Mal, wenn sie sich ändert, geht der Fokus auf den Desktop!

Ich hoffe, dass dies bei jemandem der Fall ist, der die Kommentare liest, und es wäre so einfach.

(Ich weiß nicht, ob Microsoft dies jemals beheben wird, da ich das Problem beim neuesten Build von Windows 10 (1803 - 17134.112) habe.)

Motassem MK
quelle
1

Ich hatte ständig auch Fensterfokus zu verlieren. Lesen Sie, dass jemand, der es geschafft hat, WerSvc zu verfolgen, Probleme mit einem Logger verursacht. Auch wenn dies tatsächlich ein Windows-Fehlerberichterstattungsdienst ist, ich habe jedoch versucht, ihn im Windows Task-Manager - Dienste - Dienste zu deaktivieren.

Dann hörte das Problem mit dem Verlust des Fokus auf.

Vielleicht könnt ihr es versuchen.

Leon
quelle
1

Dieses Problem hat mich verrückt gemacht! Also habe ich beschlossen, ein Programm zu schreiben, um mir mitzuteilen, wer oder was den Fokus von meinem Programm nimmt. Wirklich ärgerlich, wenn du Age of Empires spielst und das Spiel zufällig auf den Desktop wechselt.

Hier sind die Ergebnisse ...

Verizon! Ja, ich hatte eine Verizon-Helfer-App installiert und es war der Täter!
Gehen Sie zu - Systemsteuerung -> Programme und Funktionen
und deinstallieren Sie alles, was mit Verizon zu tun hat.

Ich vergesse die Namen der Programme, die normalerweise mit einem Vz begannen ... und es gibt auch einen Dienst, den ich ehrlich gesagt vergesse, da ich es kaum erwarten konnte, das, was auf meinem Computer war, von ihnen zu töten (das hat mich so verrückt gemacht) ), aber wenn Sie die Verizon-App deinstallieren, verschwindet das Problem.

Neal
quelle
1

In meinem Fall habe ich das Problem behoben, indem ich zum Windows-Prozessmanager gegangen bin und überprüft habe, ob ständig Programme gestartet und geschlossen werden. Ich konnte feststellen, dass ein Programm, das ich heruntergeladen hatte (ich glaube, es hieß Windows 8 Start), alle 7 Sekunden neu gestartet wurde. Ich habe alles gelöscht, was damit zu tun hat, und es hat funktioniert!

Ghais
quelle
1

Ich hatte das Problem, dass das aktive Fenster alle paar Sekunden den Fokus verlor. Ich müsste mit der linken Maustaste klicken, um weiter zu tippen. Wahnsinn.

Mir ist aufgefallen, dass sich das Farbschema für die Bereiche um die Ränder der Fenster jedes Mal ändert, wenn es passiert. Es schien eine einfache Möglichkeit zu sein, den Fokusverlust zu erkennen, ohne etwas zu tippen.

Also habe ich den Windows Task-Manager gestartet und auf die Registerkarte Prozesse geklickt. Nach einer Weile konnte ich feststellen, dass der Adobe Desktop Manager nicht mehr auf der Liste stand und gleichzeitig die Farbe nicht mehr richtig eingestellt war.

Ich habe die Adobe Creative Cloud-Desktopanwendung heruntergeladen und erneut installiert. (Hinweis: Ich konnte es nicht deinstallieren. Daher habe ich den Download einfach über das vorhandene Programm installiert. Falls dies nicht funktioniert, gibt es ein spezielles Programm zum Deinstallieren von Creative Cloud.) Dies hat mein Problem vollständig behoben.

Für diejenigen mit Creative Cloud ist dies möglicherweise das Programm. Wenn Sie die Registerkarte "Verarbeitung" nicht beachten und die Farbe an den Fensterrändern bei jedem Fokusverlust ändern, können Sie den Täter leichter finden.

JBMenzies
quelle
1

Ich habe den Task-Manager verwendet, um nach Hintergrundprozessen zu suchen, und Synaptics Touchpad war der Schuldige.

Der 'Treiber' war ständig an, aber alle paar Sekunden tauchte ein anderer Prozess von Synaptics auf und der Fokus ging verloren.

Ich habe Synaptics deinstalliert und hey Presto, kein Fokusverlust mehr!

Cameron
quelle
1

Ändern Sie in Regedit (halten Sie die Starttaste + R gedrückt, und geben Sie dann regedit ein) den Wert HKEY_CURRENT_USER \ Control Panel \ Desktop \ ForegroundLockTimeout von 0 auf 30d40. Speichern Sie den Computer und starten Sie ihn neu.

Heikki Sonninen
quelle
0

Suchen Sie nach einem Sicherungsdienstprogramm wie Gladinet oder Nuance Cloud Connector. (Beide verwenden die Gladinet-Engine, und diese Art von Problem war ihnen bereits 2012 bekannt.) Sie führen eine fensterlose / aufgabenlose DLL aus, die auf Explorer.exe basiert.

Tanitani
quelle
0

Mein Samsung Galaxy S6 war in ständiger "Aktualisierung von Android" und als es zum Aufladen über USB angeschlossen wurde, habe ich alle 10 Sekunden ein Fokusproblem verloren, aber es tauchte kein Explorer-Fenster im Vordergrund auf. Ich habe den USB-Anschluss geändert und vom Telefon in den USB-Lademodus gewechselt, nachdem dieses Fokusproblem behoben wurde.

Aber das ständige "Upgrading Android" -Problem ist immer noch da und muss noch gelöst werden.

TarmoPikaro
quelle
0

Ich habe das gleiche Problem. In meinem Fall handelte es sich um ein Windows XP-Programm, das unter einem Standardbenutzerkonto ausgeführt wurde. Zum Ausführen waren Administratorrechte erforderlich. Während es im Hintergrund lief, sah ich es nicht, es stahl häufig den Fokus meines aktuellen Fensters (Windows Explorer, Firefox und andere Programme). Es ist sehr nervig. Ich habe focus.exe von happy droid verwendet , um den Täter zu identifizieren. Sie können Windows Focus Logger auch für den gleichen Zweck verwenden.

Kamal
quelle
-1

Das gleiche Problem, auf das ich gestoßen bin. Mein Laptop ist etwas alt. Es verfügt über 2 GB RAM und Windows 7. Nach einer Betriebsstunde passiert jedes Mal das Gleiche. Ich habe festgestellt, dass dieser Fall auftritt, wenn der Laptop überhitzt ist. Lösung: Installieren Sie eine automatische RAM Cleaner-Software. Es ist ein Monat nach der Installation des automatischen RAM-Reinigers vergangen und ich habe mich nie wieder dem Problem gestellt.

Rudra Sagar
quelle