Получение координат активного окна и ширины по высоте в C#

#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. Пожалуйста, опишите ответы подробнее. Четкий ответ поможет людям понять, что вы имеете в виду, и увеличит вероятность выбора в качестве ответа.