C# GetForegroundWindow: методы для получения текущего дескриптора окна переднего плана

Метод GetForegroundWindow в C# используется для получения дескриптора текущего окна переднего плана, то есть окна, которое в данный момент находится в фокусе пользователя. Вот несколько способов добиться этого:

Метод 1: использование P/Invoke

using System;
using System.Runtime.InteropServices;
class Program
{
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();
    static void Main(string[] args)
    {
        IntPtr foregroundWindow = GetForegroundWindow();
        Console.WriteLine("Foreground Window Handle: " + foregroundWindow);
    }
}

Метод 2: использование класса Process

using System;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        Process foregroundProcess = Process.GetProcesses().FirstOrDefault(p => p.MainWindowHandle == GetForegroundWindow());
        Console.WriteLine("Foreground Process Name: " + foregroundProcess?.ProcessName);
    }
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();
}

Эти методы позволяют получить информацию об окне переднего плана в приложении C#. Первый метод использует P/Invoke для прямого вызова встроенной функции Windows API. Второй метод использует класс Processдля получения свойства MainWindowHandleпроцесса, связанного с окном переднего плана.