Как разработчик, бывают ситуации, когда вам необходимо взаимодействовать с активным окном или получать информацию о нем. Активное окно — это окно, которое в данный момент находится в фокусе и отображается поверх всех остальных окон. В этой статье блога мы рассмотрим различные методы получения окна переднего плана в Windows, поделимся примерами кода и разговорными объяснениями, которые помогут вам легко освоить эти методы.
Метод 1: использование функции GetForegroundWindow
Функция GetForegroundWindow — это простой и широко используемый метод для получения дескриптора окна переднего плана. Он возвращает дескриптор (HWND), который однозначно идентифицирует окно.
#include <Windows.h>
HWND GetActiveWindow()
{
return GetForegroundWindow();
}
Метод 2: перечисление окон с помощью EnumWindows
Функция EnumWindows позволяет перебирать все окна верхнего уровня на экране. Используя эту функцию и дополнительный код, вы можете идентифицировать окно переднего плана.
#include <Windows.h>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
HWND* pWindowHandle = reinterpret_cast<HWND*>(lParam);
DWORD dwWindowThreadProcessId = GetWindowThreadProcessId(hwnd, nullptr);
DWORD dwCurrentThreadProcessId = GetCurrentThreadId();
if (dwWindowThreadProcessId == dwCurrentThreadProcessId)
{
*pWindowHandle = hwnd;
return FALSE; // Stop enumerating
}
return TRUE; // Continue enumerating
}
HWND GetActiveWindow()
{
HWND activeWindow = nullptr;
EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&activeWindow));
return activeWindow;
}
Метод 3. Использование API GetForegroundWindow в C#
Если вы работаете с C#, вы можете использовать функцию GetForegroundWindow через P/Invoke для получения активного окна.
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
static void Main()
{
IntPtr activeWindowHandle = GetForegroundWindow();
// Use activeWindowHandle for further operations
}
}
Метод 4. Доступ к активному окну в Python с помощью библиотеки pywin32
Разработчики Python могут использовать библиотеку pywin32 для взаимодействия с Windows API и получения активного окна.
import win32gui
def get_active_window():
return win32gui.GetForegroundWindow()
В этой статье мы рассмотрели несколько методов получения окна переднего плана, окна, которое находится впереди всех остальных, в Windows. Мы рассмотрели методы использования C++, C# и Python, приведя примеры кода и разговорные объяснения каждого метода. Включив эти методы в свои проекты, вы сможете расширить возможности манипулирования окнами и создавать более интерактивные приложения.