¿Cómo obtengo el título de la ventana activa actual usando c #?

Me gustaría saber cómo obtener el título de la Ventana activa de la ventana actual (es decir, el que tiene foco) usando C #.

Vea un ejemplo sobre cómo puede hacer esto con el código fuente completo aquí:

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; } 

Editado con comentarios de @Doug McClean para una mejor corrección.

Si estabas hablando de WPF, utiliza:

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

Pasa el lazo por Application.Current.Windows [] y encuentra el que tiene IsActive = true.

Use la API de Windows. Llamar a GetForegroundWindow ().

GetForegroundWindow () le dará un identificador (denominado hWnd) a la ventana activa.

Documentación: http://msdn.microsoft.com/en-us/library/ms633505(VS.85).aspx

Si sucede que necesita el Formulario activo actual de su aplicación MDI : (MDI-Interfaz de documentos múltiples).

 Form activForm; activForm = Form.ActiveForm.ActiveMdiChild; 

Base en https://msdn.microsoft.com/en-us/library/ms633505(VS.85).aspx

 [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; } 

Admite caracteres UTF8.

puedes usar la clase de proceso es muy fácil. usa este espacio de nombres

 using System.Diagnostics; 

si quieres hacer un botón para obtener la ventana activa.

 private void button1_Click(object sender, EventArgs e) { Process currentp = Process.GetCurrentProcess(); TextBox1.Text = currentp.MainWindowTitle; //this textbox will be filled with active window. }