Como obtenho o título da janela ativa atual usando c #?

Eu gostaria de saber como pegar o título da janela da janela ativa atual (ou seja, aquele que tem foco) usando C #.

Veja o exemplo de como você pode fazer isso com o código fonte completo aqui:

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 com comentários de @Doug McClean para melhor correção.

Se você estava falando sobre o WPF, use:

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

Faça um loop sobre Application.Current.Windows [] e localize aquele com IsActive = true.

Use a API do Windows. Chame GetForegroundWindow ().

GetForegroundWindow () lhe dará um identificador (chamado hWnd) para a janela ativa.

Documentação: http://msdn.microsoft.com/pt-br/library/ms633505(VS.85).aspx

Se acontecer de você precisar do Formulário Ativo Atual do seu aplicativo MDI : (MDI- Multi Document Interface).

 Form activForm; activForm = Form.ActiveForm.ActiveMdiChild; 

Base em https://msdn.microsoft.com/pt-br/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; } 

Suporta caracteres UTF8.

você pode usar a class de processo é muito fácil. use este namespace

 using System.Diagnostics; 

se você quiser fazer um botão para obter a janela ativa.

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