Aktives Fenster (Programm) verliert unerwartet den Fokus in Windows 7

65868
trejder

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

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

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

  2. Einer der genannten Computer hat Windows 7 HE 64-Bit, ein anderer hat Windows 7 Pro 32-Bit. 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 (Sie müssen auf das Fenster klicken, um es weiterhin verwenden zu können), manchmal wird es zu einem anderen Hintergrundprozess (?) Verschoben und kehrt nach etwa 2-3 Sekunden zurück.

  4. Ich habe nicht seit letzten Wochen etwas Neues auf jeder dieser Computer zu installieren ( mit Ausnahme von Windows Update und andere automatisierte updades wie Chrome - Browser Auto-Update) und sicherlich erwähnt probles begannen viele Tage nach der letzten Installation von geschehen .

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

  1. Ich wähle Text in Chrome aus und sehe tatsächlich, dass die Auswahlfarbe von blau (Auswahl in aktiven Fenstern) in grau (Auswahl in inaktivem Fenster) wechselt.

  2. Ich bearbeite einige Dokumente in Word, Notepad ++ oder eine E-Mail in Google Mail in Chrome, und der Bearbeitungsprozess wird entweder für einige Sekunden angehalten (wenn sich der Fokus verschiebt), und der Vorgang wird dauerhaft beendet (der Fokus ist endgültig verloren).

Ich habe Microsoft Security Essentials aktiv, aktualisiert und funktioniert und meldet nichts Ungewöhnliches.

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

Hat oder hatte jemand ähnliche Probleme oder hat eine Idee, was kann dies bewirken oder wie kann ich das beheben?

15
Tritt das Problem auch im abgesicherten Modus auf (mit oder ohne Netzwerk)? Starten Sie `msconfig` und wählen Sie die Registerkarte ** Startup **. Welche Programme gibt es? and31415 vor 10 Jahren 2
Es ist sehr schwierig, das beschriebene Problem zu "fangen", da es nicht allzu oft vorkommt. Zum Beispiel - keine Spur für die letzten zwei Tage. Also müsste ich Tage im _Safe Mode_ arbeiten, um zu versuchen, dies zu "fangen". Aber danke für die Idee. Siehe auch meine Antwort unten. trejder vor 10 Jahren 1

18 Antworten auf die Frage

14
trejder

Wie und31415 mir riet, habe ich mir genau angesehen, was in meinem Programm- StartupTab steht msconfig, aber nichts Ungewöhnliches gefunden.

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

Ich googelte ein wenig mehr und bekam ein paar Anregungen / Ratschläge, nämlich dass ich versuchen sollte, Alt+ F4sofort zu drücken, sobald ich einen Fokus auf einen Fokus stelle . Dies sollte den Prozess beenden, der zu dieser Fokusstealth führen könnte. Dann kann ich versuchen, Process Monitoraus SysinternalsPaket heraus den Prozess zu verfolgen, der gerade beendet wurde.

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

Wählen Sie in "msconfig" die Registerkarte "** Dienste" und aktivieren Sie die Option "Alle Microsoft-Dienste ausblenden". Überprüfen Sie auch das. Hier ist ein offizieller KB-Artikel, der nützlich sein kann: [Führen Sie einen Neustart durch, um festzustellen, ob Hintergrundprogramme Ihr Spiel oder Ihr Programm stören] (http://support.microsoft.com/kb/331796). Auch wenn Sie nichts Ungewöhnliches sehen, ist es meiner Meinung nach eine gute Idee, alle Startup-Elemente und Services von Drittanbietern aufzulisten, die Sie erhalten haben. and31415 vor 10 Jahren 1
@trejder, mussten Sie https://technet.microsoft.com/en-us/sysinternals/bb896645 oder etwas anderes herunterladen, oder beziehen Sie sich auf eine integrierte Funktion von Windows, mit der Sie eine Liste der Prozesse anzeigen können das vor kurzem beendet? Vielen Dank! Ryan vor 8 Jahren 0
@Ryan Nope, wie in der Antwort - `Process Monitor` aus dem` Sysinternals`-Paket. trejder vor 8 Jahren 0
Wenn Sie `Process Monitor` verwenden, gehen Sie zum Menü Filter und fügen Sie den folgenden Filter hinzu: Vorgang ist nicht Prozess beenden, dann Ausschließen. Mein Touchpad-Treiber hat einen Fehler ausgegeben und versucht, ihn mit Windows Problem Reporting zu melden. Danke% #! @ Für diese Q & A-Websites, sonst hätte ich meinen Laptop zerstört. Daryl Van Sittert vor 8 Jahren 2
Mir ist das gerade passiert. Es stellte sich heraus, dass es sich bei C: \ Programme (x86) \ ViveSetup \ PCClient \ HTCVRMarketplaceUserContextHelper.exe ** um ein Programm für das HTC Vive handelt. Ich habe das gesamte Verzeichnis gelöscht. Ich vermute, es ist ein Problem mit ihrem Update Anfang dieser Woche MickyD vor 7 Jahren 0
9
Omar Alshaker

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 ", oldPid); try { Console.WriteLine(" name ", pro.Where((x) => x.Id == oldPid).ToList()[0].ProcessName); } catch (Exception e) { Console.WriteLine($" Hit exception "); } } if (diff.Count > 0) { lastPros = currentPros; oldProcessList = processlist; } System.Threading.Thread.Sleep(100); } } } } 

Ausgabebeispiel mit Prozessbeginn (grün) und abschließend (rot)

Output sample

Gute Idee und schönes Stück Code. Da dies jedoch eine Site für _users_ ist, nicht für Entwickler (dies ist Super User, nicht Stack Overflow), sollten Sie einige Erklärungen hinzufügen, wie Nicht-C # -Entwickler Ihren Code ausführen können. trejder vor 8 Jahren 8
Ich habe eine verbesserte Version davon erstellt und in [meine eigene Antwort] (// superuser.com/a/1224735/269404) eingefügt, einschließlich der Antworten auf Ihre Fragen, @trejder. Palec vor 7 Jahren 0
konvertieren Sie dies wahrscheinlich in PowerShell, die keinen C # -Compiler benötigt? phuclv vor 6 Jahren 0
@phuclv sicher weitergehen: D Omar Alshaker vor 6 Jahren 0
4
Pampam

In meinem Fall wurde wermgr.exe (Windows-Fehlerberichterstattung) immer wieder gestartet. Ich folgte der nachstehenden Lösung, um den automatischen Start zu stoppen, und das Problem wurde dadurch gelöst.

  1. Schaltfläche Start -> Geben Sie im Suchfeld Action Center -> ein Enter.
  2. Klicken Sie auf den Pfeil neben Wartung, um ihn zu erweitern.
  3. Klicken Sie unter Nach Lösungen zu Problemberichten suchen auf Einstellungen .
  4. Klicken Sie auf Berichtseinstellungen für alle Benutzer ändern .
  5. Aktivieren Sie das Optionsfeld neben Bei jedem Problem fragen Sie mich, bevor Sie nach einer Lösung suchen .
  6. Klicken Sie auf OK, um Ihren Ausweg zu bestätigen.
3
Palec

Der Fokus wird wahrscheinlich durch eine fehlerhafte Hintergrundaufgabe gestohlen. Es öffnet sich ein Fenster, das den Fokus stiehlt, und es wird sehr schnell geschlossen, der Fokus kehrt jedoch 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 ( Spiegelung ) oder ein benutzerdefiniertes C # -Programm verwenden, das dem Prozessmonitor ähnlich ist :

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("\tPID \t", 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 Bugfixed-Version des von Omar Alshaker bereitgestellten Codes . Benötigt auch nicht C # 6. Benötigt .NET 3.5 oder neuer.

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


Um den Compiler zu finden, führen Sie ihn aus where /R %windir%\Microsoft.NET csc.exe. Wählen Sie die Version aus der neuesten .NET-Version aus, unabhängig davon, ob 32b oder 64b. Speichern Sie den C # -Code in Program.csund kompilieren Sie ihn wie folgt Program.exe:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Program.cs 
Dieser Code gibt den Fehler "Der Typ oder Namespace 'Prozess' konnte nicht gefunden werden". Also musste ich einen Verweis auf System.dll hinzufügen. Wilson vor 6 Jahren 0
Seltsam, @ Wilson. Welche Version von csc.exe verwenden Sie? Palec vor 6 Jahren 0
Die Befehlszeile lautet übrigens dann "csc.exe -reference: System.dll Program.cs". Siehe [-referenz-C # -Compiler-Optionsdokumente] (https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/compiler-options/reference-compiler-option). Palec vor 6 Jahren 1
Ich habe `Microsoft (R) Visual C # -Compiler Version 2.6.0.62329 (5429b35d)` Wilson vor 6 Jahren 0
Diese Version scheint aus einem älteren Build von VS 2017 (oder dessen Build-Tools) zu stammen. Ich kann das Problem mit dem aktuellen VS 2017 (15.6.4, `csc -version` 2.7.0.62715 (db02128e)) nicht reproduzieren. Vielen Dank für das Teilen des Problems und seiner Lösung. Palec vor 6 Jahren 0
2
funk79

Ich habe die NMBgMonitor.exeStartdienste entfernt, um das Problem zu lösen.

Ich hatte auch das gleiche Problem, dass das Google Chrome-Fenster für einige Sekunden den Fokus verlor und dann zurückkehrte. Beim Betrachten der Registerkarte "Task-Manager-Dienste" habe ich festgestellt, dass NMBgMonitor immer aktiv war, wenn der Fokus verloren ging (dies hat etwas mit Nero zu tun).

2
Tobias

Der Hinweis mit Alt+F4zum Beenden des unterbrechenden Programms hat gut funktioniert. Anstatt das gerade verlassene Programm mit SysInternal's zu verfolgen ProcessManager, habe ich das Programm wie folgt verfolgt:

  1. Öffnen Task manager
  2. Machen Sie einen Screenshot der offenen Prozesse
  3. Wechseln Sie zu Browser, Mail usw. und warten Sie auf den Fokusverlust.
  4. Drücken Sie Alt+F4, um das Unterbrechungsprogramm zu beenden
  5. Gehe zu Task managerund vergleiche offene Prozesse mit dem Screenshot
  6. Der nun "fehlende" Prozess hat das Problem verursacht

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 berichtet ( twcu.exe auf file.net ) und hier ( twcu.exe auf computerbase.de ), TP-Link Configuration toolwird für die WIFI-Verbindung selbst nicht benötigt. Ich habe es von Autostart ( msconfig> system start) entfernt, den Computer neu gestartet und die Verbindung zum WIFI funktioniert einwandfrei - und die Probleme mit dem Fokusverlust sind weg!

2
Oded Maimon

In meinem Fall und wahrscheinlich bei allen Lenovo PCs / Laptops war das Problem mit Lenovo svcguihlpr.exe, das alle paar Minuten zu arbeiten beginnt und den Fokus ohne angezeigte UI nimmt. Dieser Prozess ist eine Lenovo Access Connections-App, die eine schöne Benutzeroberfläche für die Verwaltung bietet WiFi und Breitband-Netzwerke .. Ich habe es nie benutzt, ich habe es sogar von der Taskleiste entfernt, aber es funktioniert immer noch ...

heute stellte ich fest, dass es das Problem war und deinstallierte es!

so viel Spaß..

Übrigens fand ich es, indem ich das möglichst idiotische Ding tat, mein Handy nahm, ein Video aufnahm, auf dem der Bildschirm ausgeführt wurde, während ich den Task-Manager ausführte und meine Arbeit fortsetzte überprüft, welche Prozesse nach oben verschoben wurden, svcguihlpr stand weniger als eine Sekunde an der Spitze.

Ich hoffe, es wird anderen helfen.

es war komisch zu sagen "so viel spaß" darüber, dass es kein xD-problem gibt Motassem MK vor 6 Jahren 0
2
Motassem MK

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 Hintergrund und jedes Mal, wenn sie sich ändert, geht der Fokus auf den Desktop!

Ich hoffe, dass dies für jemanden der Fall ist, der die Kommentare liest, und es wäre so einfach.

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

1
Leon

Ich hatte auch ständig Fenster verloren. Lesen Sie, dass jemand es geschafft hat, WerSvc zu verfolgen, ein Problem mit einem Logger verursacht. Auch wenn es sich tatsächlich um einen Windows-Fehlerberichterstattungsdienst handelt, habe ich versucht, ihn im Windows Task-Manager - Dienste - Dienste zu deaktivieren.

Dann hörte das Problem des Fokusverlusts auf.

Vielleicht könnt ihr es versuchen.

1
Neal

Dieses Problem hat mich verrückt gemacht! Also entschied ich mich, ein Programm zu schreiben, um mir zu sagen, wer oder was den Fokus von meinem Programm nimmt. Wirklich ärgerlich, wenn Sie Age of Empires spielen und das Spiel zufällig auf den Desktop geht.

Hier sind die Ergebnisse ....

Verizon! Ja, ich hatte eine Verizon-Helfer-App installiert und es war der Schuldige!
Gehen Sie zu - Systemsteuerung -> Programme und Funktionen
und deinstallieren Sie alles, was Verizon betrifft.

Ich vergesse die Namen der Programme, die normalerweise mit einem Vz begonnen haben ... und es gibt auch einen Dienst IW ... Ich vergesse ehrlich, da ich es nicht erwarten konnte, das zu töten, was sich auf meinem Rechner befand (es hat mich so verrückt gemacht ), aber wenn Sie die Verizon-App deinstallieren, wird das Problem behoben.