visual tutorial studio form español ejemplos descargar c# .net windows winforms

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;



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