c# - tutorial - windows forms descargar
¿Cómo obtengo el título de la ventana activa actual usando c#? (7)
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 #.
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.
Pasa el lazo por Application.Current.Windows [] y encuentra el que tiene IsActive = true.
Si estabas hablando de WPF, utiliza:
Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);
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;
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
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.
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.
}