Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting Active Window Coordinates and Height Width in C#

Tags:

c#

window

I just check in some of the posts here, but none were helpful to me.

The thing I am trying to do is to run a background process of Screen Capturing. Now I want a piece of code that would give me the X, Y or any Active/Current Window opened (Say Notepad) and its Height and Width.

Just that and nothing else.

like image 438
Abhinav Dabral Avatar asked May 04 '11 05:05

Abhinav Dabral


2 Answers

[DllImport("user32.dll")]  
static extern IntPtr GetForegroundWindow();  


private IntPtr GetActiveWindow()  
{  
    IntPtr handle = IntPtr.Zero;  
    return GetForegroundWindow();  
}

Then get the window position with 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  
}
like image 192
Eminem Avatar answered Nov 14 '22 21:11

Eminem


    [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);
    }
like image 20
Alex Avatar answered Nov 14 '22 21:11

Alex