초점은 아마도 버그가 많은 백그라운드 작업에 의해 도난되었을 것입니다. 초점을 훔치는 창을 열고 매우 빠르게 닫히지 만 초점이 돌아 오지 않습니다. 최근에 Microsoft Office에는 그러한 버그가있었습니다 .
이러한 프로세스를 발견하려면 Window Focus Logger ( mirror ) 와 같은 도구 또는 Process Monitor 와 유사한 사용자 정의 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도 필요하지 않습니다. .NET 3.5 이상이 필요합니다.
csc.exe
.NET Framework 설치와 함께 제공 되는 C # 컴파일러 ( )를 사용하여 컴파일 하고 결과 실행 파일을 실행하여 시작 (녹색) 또는 종료 (빨간색) 프로세스의 실시간 로그를 얻을 수 있습니다. Ctrl+ C를 사용 하여 종료하십시오.
컴파일러를 찾으려면을 실행하십시오 where /R %windir%\Microsoft.NET csc.exe
. 32b 또는 64b에 관계없이 설치된 최신 .NET 버전에서 하나를 선택하십시오. C # 코드를 저장 Program.cs
하고 다음으로 컴파일하십시오 Program.exe
.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Program.cs
msconfig
을 클릭하고 시작 탭을 선택 하십시오. 어떤 프로그램이 있습니까?