アクティブウィンドウ(プログラム)がWindows 7で予期せずフォーカスを失う


23

現在使用しているWindowsのアクティブウィンドウ(アクティブプログラム)から何かがシフト(盗み)しています。

私はこの質問で説明したのと同じ問題を抱えていますが、いくつかの例外があります。

  1. (少なくとも)2台の異なるコンピューターでこの動作を観察したため、これはマシン固有ではありません。

  2. 前述のコンピューターの1つには64ビットのWindows 7 HEがあり、もう1つには32ビットのWindows 7 Proがあるため、この問題は特定のバージョンのWindowsまたは特定のハードウェアプラットフォームに固有のものではありません。

  3. フォーカスが完全に失われることもあります(ウィンドウをクリックして使用し続ける必要があります)。場合によっては、別のバックグラウンドプロセス(?)に移動し、約2〜3秒後に戻ります。

  4. 私は過去数週間のために、これらのコンピュータのいずれかに何か新しいものをインストールしていない(Windows UpdateおよびChromeブラウザの自動更新のような他の自動updadesを除く)と、最後のインストール後、何日も起こり始めた確かに言及probles

私のコンピューターの現在の動作は本当に奇妙で、全体が面倒になります。例:

  1. Chromeでテキストを選択すると、実際には選択色が青(アクティブなウィンドウでの選択)からグレー(非アクティブなウィンドウでの選択)に変わります。

  2. Word、Notepad ++、またはChromeのGmailでいくつかのドキュメントを編集していますが、編集プロセスが数秒間停止し(フォーカスがシフトした場合)、永久に終了します(フォーカスが失われます)。

Microsoft Security Essentialsをアクティブに更新し、動作させていますが、異常は報告されません。

私は、Google Chromeで最も頻繁に発生すると感じました。最初は、このブラウザの最新のアップデートのいくつかを告発する準備がほぼできていたので、確信がありました。しかし、Chromeではこれが私の最も頻繁に使用されるプログラムであるため、私はこれをChromeで異常に頻繁に気付きました。

誰もが同様の問題を抱えていたり、抱えていたり、何か考えがありますか、これを引き起こしている可能性があるもの、またはこれを修正する方法はありますか?


2
問題はセーフモードでも発生しますか(ネットワークの有無にかかわらず)?開始しmsconfig、[ スタートアップ ]タブを選択します。どんなプログラムがありますか?
and31415 14年

1
説明された問題を「キャッチ」することは非常に困難です。これは、あまり頻繁に発生しないためです。たとえば、過去2日間のトレースはありません。したがって、これを「キャッチ」しようとすると、セーフモードで何日も働かなければなりません。しかし、アイデアをありがとう。また、以下の私の答えをご覧ください。
トレジェ14年

回答:


17

以下のようand31415は私に助言し、私は私の中にあるもので、慎重に見て取ったStartupのタブmsconfigのプログラムを、しかし珍しい何も見つかりませんでした。

これは、Windowsではなく、外部プログラム(以前は気づかなかったが、最近新しいものを何もインストールしていませんが)によって引き起こされる99%であることは明らかです。これが私にとってここで最も重要なポイントです。

私はもう少しグーグル検索して、いくつかのアイデア/アドバイスを得ました。つまり、フォーカスのスチールに気づいたらすぐにAlt+ を押してみるべきだF4ということです。これは、このフォーカスステルスを引き起こす可能性のあるプロセスを終了する必要があります。次に、パッケージから使用して、終了したばかりのプロセスをトレースしようとする場合Process MonitorがありSysinternalsます。

これにより、この問題の原因を知ることができます。


1
からmsconfig、[ サービス ]タブを選択し、[ すべてのMicrosoftサービスを非表示にする]を有効にします。それも確認してください。役立つ可能性のある公式KB記事を次に示します。クリーンスタートアップを実行して、バックグラウンドプログラムがゲームまたはプログラムに干渉しているかどうかを判断します。また、異常なものが何も表示されない場合でも、入手したすべてのサードパーティのスタートアップアイテムとサービスを一覧表示することをお勧めします。
および31415 14

@ trejder、technet.microsoft.com / en-us / sysinternals / bb896645などをダウンロードする必要がありましたか、それとも最近終了したプロセスのリストを確認できるWindowsの組み込み機能を参照していますか?ありがとう!
ライアン

@Ryan Nope、答えのように- パッケージProcess MonitorからSysinternals
トレジェ

2
を使用する場合Process Monitor、[フィルター]メニューに移動し、次のフィルターを追加しますProcess Exit。タッチパッドドライバーがエラーをスローして、Windows Problem Reportingで報告しようとしていました。これらのQ&Aサイトについては%#!@に感謝します。そうしないと、ラップトップが破壊されてしまいます。
ダリルヴァンシッタート

私はこれが私に起こった。であることが判明\プログラムファイル(x86の)\ ViveSetup \ PCClient \ HTCVRMarketplaceUserContextHelper.exe:C - 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
良いアイデアと素晴らしいコード。しかし、これは開発ではなくユーザー向けのサイトなので(これはスタックオーバーフローではなくスーパーユーザーです)、C#以外の開発者がコードを実行する方法について説明を追加する必要がありますか?
trejder

これの改良版を作成し、質問への回答@trejderを含む自分の回答に入れました。
パレック

これをおそらくC#コンパイラを必要としないPowerShellに変換しますか?
phuclv

@phuclv確かに先に行く:D
オマーアルシェーカー

7

おそらく、バグのあるバックグラウンドタスクによってフォーカスが奪われます。フォーカスを奪うウィンドウを開き、非常にすばやく閉じますが、フォーカスは戻りません。最近、Microsoft Officeにはこのようなバグがありました

このようなプロセスを検出するには、使用することができますツールのようなウィンドウフォーカスロガーミラー)またはに似た独自のC#プログラムプロセスモニタを

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

Omar Alshakerが提供するコードの洗練されたバグ修正バージョン。C#6も必要ありません。.NET3.5以降が必要です。

csc.exe.NET Frameworkインストールに付属するC#コンパイラー()を使用してコンパイルし、結果の実行可能ファイルを実行して、開始(緑)または終了(赤)するプロセスのリアルタイムログを取得できます。Ctrl+ Cを使用して終了します。


コンパイラを見つけるには、を実行しwhere /R %windir%\Microsoft.NET csc.exeます。32bまたは64bに関係なく、インストールされている最新の.NETバージョンから1つを選択します。C#コードを保存しProgram.csてコンパイルしますProgram.exe

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

このコードは、「タイプまたは名前空間「プロセス」が見つかりませんでした」というエラーを表示します。そのため、System.dllへの参照を追加する必要がありました。
ウィルソン

奇妙な、@ウィルソン。どのバージョンのcsc.exeを使用していますか?
パレスチ

1
ところで、コマンドラインはそうcsc.exe -reference:System.dll Program.csなります。-reference 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. [OK]をクリックして、出て行ってください。

3

Alt+F4割り込みプログラムを終了するためのヒントはうまく機能しました。代わりにちょうど終了したプログラムをトレースするSysInternalProcessManagerは次のように、私はプログラムをトレースしました:

  1. 開いた Task manager
  2. 開いているプロセスのスクリーンショットを撮る
  3. ブラウザ、メールなどに切り替えて、「フォーカスが失われるのを待つ」
  4. を押しAlt+F4て割り込みプログラムを終了します
  5. Task manager開いて、開いているプロセスをスクリーンショットと比較します
  6. 現在「欠落」しているプロセスが問題を引き起こしました

私の場合、それはtwcu.exeで始まるプログラムTP-Link Configuration toolでした。外部WIFI-USBスティックで使用されます。(ここで報告file.netでtwcu.exe)とここ(computerbase.deでtwcu.exe [ドイツ])、TP-Link Configuration toolWIFI接続自体には必要ありません。Autostart(msconfig> system start)から削除し、コンピューターを再起動しましたが、WIFIに問題なく接続できました。フォーカスロスの問題はなくなりました。


2

NMBgMonitor.exeこの問題を解決するために、スタートアップサービスから削除しました。

また、Google Chromeウィンドウが数秒間フォーカスを失ってから戻るという同じ問題を抱えていました。タスクマネージャーの[サービス]タブを見ると、フォーカスが失われるたびにNMBgMonitorがアクティブになっていることに気付きました(Neroと関係があります)。


2

私の場合、そしておそらくすべてのレノボPC /ラップトップの場合、問題はレノボsvcguihlpr.exeにあり、数分ごとに動作し、UIを表示せずにフォーカスを取得します...このプロセスは、管理のための素晴らしいUIを提供するLenovo Access Connectionsアプリです無線LANとブロードバンドネットワーク..私はそれを使用したことがない、私はそれをタスクバーから削除しましたが、それでも動作します...

今日、それが問題であることがわかり、アンインストールしました!

とても楽しい..

ちなみに、私は可能な限り最もばかげたことをして、携帯電話を持ち、画面を録画してビデオを開始することでそれを見つけました。タスクマネージャーを実行し、作業を続けます..フォーカスが失われたら、1秒待ってから記録を停止し、どのプロセスが上に移動したかをチェックすると、svcguihlprが1秒未満でトップになりました。

他の人の助けになることを願っています。


xDの問題がないことについて「とても楽しい」と言うのは陽気でした
Motassem MK

2

この問題があり、タイミングはランダムだと思ったが、そうではなかった。

私の場合、壁紙の変更と同じくらい簡単でした
壁紙としてスライドショーがあり、それが変わるたびに、デスクトップにフォーカスが移ります!

私はこれがコメントを読んでいる人に当てはまることを望み、それはこれと同じくらい簡単だろう。

(マイクロソフトがWindows 10の最新ビルド(1803-17134.112)で問題を抱えているため、マイクロソフトがこれを修正するかどうかはわかりません)


1

私もウィンドウが常にフォーカスを失っていました。ロガーを使用して、WerSvcを追跡できた人が問題を引き起こしていることを読んでください。それが実際にはWindowsエラー報告サービスである場合でも、Windowsタスクマネージャー-サービス-サービスで無効にしようとしました。

その後、フォーカスを失う問題は停止しました。

たぶん、あなたはそれを試すことができます。


1

この問題に夢中になりました!だから、私はプログラムを書いて、誰が何に焦点を当てているのかを教えてくれました。Age of Empiresをプレイしていて、ゲームがデスクトップにランダムに移動すると、本当に迷惑になります。

調査結果は次のとおりです。

ベライゾン!はい、Verizonヘルパーアプリをインストールしましたが、これが原因です。
-[コントロールパネル]-> [プログラムと機能]に移動し
、Verizonに関連するものをすべてアンインストールします。

通常はVzで始まるプログラムの名前を忘れてしまいます...そして、IW ...というサービスもあります...マシン上にあるものを何でも殺すのを待つことができなかったので、正直忘れてしまいました)が、Verizonアプリをアンインストールすると、問題はなくなります。


1

私の場合、Windowsプロセスマネージャーに移動して、プログラムが常に起動および終了しているかどうかを確認することで問題を修正しました。ダウンロードしたプログラム(Windows 8スタートと呼ばれていました)が7秒ごとに再起動していることがわかりました。私はそれに関連するものをすべて削除しましたが、うまくいきました!


1

アクティブウィンドウが数秒ごとにフォーカスを失うという問題がありました。入力を続けるには左クリックする必要があります。狂った。

私はそれが起こるたびにウィンドウウィンドウの端の周りの領域の配色が変わることに気づきました。実際に入力しなくても焦点が合っていないことを確認する簡単な方法のように思えました。

そこで、Windowsタスクマネージャーを起動し、[プロセス]タブをクリックしました。しばらく見た後、フォーカスの色の変更が失われると同時に、アドビのデスクトップマネージャーがリストから削除されていることがわかりました。

Adobe Creative Cloudデスクトップアプリケーションをダウンロードして再インストールしました。(注:アンインストールできませんでしたので、ダウンロードしたものを既存のものの上にインストールしました。これが機能しない場合は、Creative Cloudをアンインストールするための特別なプログラムがあります。)

Creative Cloudを使用している人にとっては、これがプログラムかもしれません。そうでない場合は、フォーカスを失うたびに処理タブとウィンドウの端の色の変化を見ると、犯人を見つけるのに役立ちます。


1

タスクマネージャーを使用してバックグラウンドプロセスを探しましたが、Synaptics Touchpadが原因でした。

「ドライバー」は常にオンでしたが、Synapticsによる別のプロセスが数秒ごとにポップアップし、フォーカスが失われていました。

私はSynapticsをアンインストールしましたが、これ以上フォーカスを失うことはありません!


1

Regedit(スタートボタン+ Rを押したままregeditと入力)で、HKEY_CURRENT_USER \ Control Panel \ Desktop \ ForegroundLockTimeout値を0から30d40に変更します。コンピューターを保存して再起動します。


0

GladinetやNuance Cloud Connectorなどのバックアップユーティリティを確認します。(どちらもGladinetのエンジンを使用しており、この種の問題は2012年に既に知られていました。)Explorer.exe内でウィンドウレス/タスクレスdllを実行しています。


0

私のSamsung Galaxy S6は常に「Upgrading Android」で、充電のためにUSB経由で接続すると、10秒ごとにフォーカスの問題がなくなりましたが、エクスプローラーウィンドウが前面に表示されませんでした。フォーカスの問題が解消された後、USBポートを変更し、電話から「Usb Charging」モードに選択しました。

ただし、「Androidのアップグレード」の問題は常に存在し、解決する必要があります。


0

私は同じ問題を抱えています。私の場合、それは標準ユーザーアカウントで実行されたWindows XPプログラムでした。実行するには管理者の昇格した権限が必要でした。そのため、バックグラウンドで実行されていましたが、表示されませんでした。現在のウィンドウ(windows explorer、firefox、およびその他のプログラム)のフォーカスを頻繁に盗みました。それは非常に迷惑です。ハッピードロイドの focus.exeを使用して、犯人を特定しました。また、同じ目的でWindows Focus Loggerを使用できます。


-1

私が遭遇した同じ問題。私のラップトップは少し古いです。2GBのRAMとウィンドウ7があります。1時間実行すると、これと同じことが毎回発生します。ラップトップが過熱しているときにこのケースが発生することに気付きました。解決策:自動RAMクリーナーソフトウェアをインストールします。自動RAMクリーナーをインストールしてから1ヶ月が経ちましたが、二度と問題に直面することはありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.