How do I get the title of the current active window using c#? How do I get the title of the current active window using c#? windows windows

How do I get the title of the current active window using c#?


See example on how you can do this with full source code here:

http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/

[DllImport("user32.dll")]static extern IntPtr GetForegroundWindow();[DllImport("user32.dll")]static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);private string GetActiveWindowTitle(){    const int nChars = 256;    StringBuilder Buff = new StringBuilder(nChars);    IntPtr handle = GetForegroundWindow();    if (GetWindowText(handle, Buff, nChars) > 0)    {        return Buff.ToString();    }    return null;}

Edited with @Doug McClean comments for better correctness.


If you were talking about WPF then use:

 Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);


Based on GetForegroundWindow function | Microsoft Docs:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]static extern IntPtr GetForegroundWindow();[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]static extern int GetWindowTextLength(IntPtr hWnd);private string GetCaptionOfActiveWindow(){    var strTitle = string.Empty;    var handle = GetForegroundWindow();    // Obtain the length of the text       var intLength = GetWindowTextLength(handle) + 1;    var stringBuilder = new StringBuilder(intLength);    if (GetWindowText(handle, stringBuilder, intLength) > 0)    {        strTitle = stringBuilder.ToString();    }    return strTitle;}

It supports UTF8 characters.