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.
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.