我如何使用c#获得当前活动窗口的标题?

我想知道如何使用C#获取当前活动窗口(即有焦点的窗口)的Window标题。

查看关于如何使用完整源代码在此处执行此操作的示例:

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

用@Doug McClean 编辑,以获得更好的正确性。

如果你在谈论WPF,那么使用:

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

在Application.Current.Windows []上循环并findIsActive = true的那个。

使用Windows API。 调用GetForegroundWindow()。

GetForegroundWindow()会给你一个句柄(名为hWnd)到活动窗口。

文档: http : //msdn.microsoft.com/en-us/library/ms633505(VS.85).aspx

如果碰巧您需要MDI应用程序中当前活动表单 :(MDI-多文档界面)。

 Form activForm; activForm = Form.ActiveForm.ActiveMdiChild; 

你可以使用stream程类,这很容易。 使用这个命名空间

 using System.Diagnostics; 

如果你想做一个button来获得活动窗口。

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