Приведенный ниже метод работает, за исключением случаев, когда фокус выполняется только на фоновом процессе.Это в случае с рабочим столом Windows.Он крадет статус окна переднего плана, но не на переднем плане.
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
public bool IsForeground()
{
Window window = Application.Current.MainWindow;
IntPtr windowHandle = new WindowInteropHelper(window).Handle;
IntPtr foregroundWindow = GetForegroundWindow();
return windowHandle == foregroundWindow;
}