#c# #window
#c# #окно
Вопрос:
Я просто проверяю некоторые сообщения здесь, но ни одно из них не было для меня полезным.
То, что я пытаюсь сделать, это запустить фоновый процесс захвата экрана. Теперь я хочу фрагмент кода, который давал бы мне X, Y или любое активное / текущее открытое окно (скажем, блокнот), а также его высоту и ширину.
Только это и ничего больше.
Комментарии:
1. на какой платформе? silverlight? wpf? winforms? asp.net ? консоль? (и т.д.)
2. это версия .net, которую вы используете. не ваша платформа. 🙂
Ответ №1:
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
private IntPtr GetActiveWindow()
{
IntPtr handle = IntPtr.Zero;
return GetForegroundWindow();
}
Затем получите положение окна с помощью GetWindowRect.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner
public int Right; // x position of lower-right corner
public int Bottom; // y position of lower-right corner
}
Комментарии:
1. Большое спасибо. Я просто собираюсь протестировать это сейчас 🙂
2. ‘частный дескриптор GetActiveWindow()’ Выдает ошибку для дескриптора :/
Ответ №2:
[DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(IntPtr hWnd, out Rectangle lpRect);
static void Main()
{
SetProcessDPIAware();
Rectangle t2;
GetWindowRect(GetForegroundWindow(),out t2);
}
Комментарии:
1. Привет, добро пожаловать в stackoverflow. Пожалуйста, опишите ответы подробнее. Четкий ответ поможет людям понять, что вы имеете в виду, и увеличит вероятность выбора в качестве ответа.