Me gustaría saber cómo agarrar el título de la ventana de la ventana activa actual (es decir, la que tiene foco) usando C#.¿Cómo obtengo el título de la ventana activa actual usando C#?
Respuesta
Véase el ejemplo de cómo se 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 @Doug McClean comentarios para mejor corrección.
No se olvide de ser un buen ciudadano. http://blogs.msdn.com/oldnewthing/archive/2007/07/27/4072156.aspx y http://blogs.msdn.com/oldnewthing/archive/2008/10/06/8969399.aspx tienen información relevante . –
una nueva nota, para que se ejecute, 'usando System.Runtime.InteropServices;' y donde colocar la dll import y static extern lines. pegándolo dentro de la clase – barlop
@smink Cómo obtener la ventana de primer plano activo para un usuario específico (digamos que el proceso se ejecuta como servicio). – tchelidze
utilizar la API de Windows. Llamar a GetForegroundWindow().
GetForegroundWindow() le dará un mango (llamado CVent) a la ventana activa.
Documentación: http://msdn.microsoft.com/en-us/library/ms633505(VS.85).aspx
bucle sobre Application.Current.Windows [] y encontrar el uno con IsActive = true.
¿No funcionaría esto solo para las ventanas en la aplicación .Net actual? Creo que d4nt quiere obtener el título de la ventana activa actual en el escritorio, sin importar a qué aplicación pertenezca. – Quagmire
Si hablabas de WPF a continuación, utilizar:
Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);
Si toda la aplicación no está activa (otro programa tiene foco), ninguna ventana tendrá IsActive configurado en verdadero. – Todd
En realidad, podría ser incorrecto, en mi caso, estaba tratando de acceder a la matriz de Windows en un hilo no relacionado con la interfaz de usuario. Sin embargo, también vea esto en caso de que aún tenga razón: https://social.msdn.microsoft.com/Forums/vstudio/en-US/654c74fe-0a88-425f-99cd-ccf97ff234bc/active-window-of-an- inactive-application? forum = wpf – Todd
puede utilizar la clase proceso es muy fácil. utilizar este espacio de nombres
using System.Diagnostics;
si usted quiere hacer un botón para obtener 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.
}
Esto es incorrecto. Mostrará el título de su programa no de la ventana activa actual. – isHuman
Si sucede que lo que necesita la forma activa actual de su aplicación MDI: (MDI-Multi Documento Interface).
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;
}
Es compatible con caracteres UTF8.
- 1. Obtiene el título actual de la ventana activa en Java
- 2. Obtiene el título actual activo de la ventana en C
- 3. ¿Cómo determinar si la ventana actual es la ventana activa?
- 4. ¿Cómo obtener el título de la ventana activa con AutoHotKey?
- 5. C# obtener información sobre la ventana activa actual
- 6. Obtenga el título de la ventana/documento activa actual en Mac OS X
- 7. Obteniendo el nombre de la ventana activa
- 8. Obtener la última ventana activa: Obtener Ventana previamente activa
- 9. Establecer la ventana activa
- 10. ¿Cómo obtengo el texto seleccionado de la ventana enfocada usando la API Win32 nativa?
- 11. cómo obtengo el título de una URL
- 12. Cómo recuperar el texto seleccionado de la ventana activa
- 13. ¿Cómo obtengo la URL actual de mi script usando PHP?
- 14. Encontrar la ventana activa actual en Mac OS X usando Python
- 15. ¿Cómo obtengo el título del botón MessageBox?
- 16. ¿Cómo obtengo la fecha actual?
- 17. Título de la ventana de la consola c
- 18. Obtiene el título activo de la ventana en X
- 19. Obtener texto resaltado de la ventana activa
- 20. Consulte la ventana activa en WPF?
- 21. Obtiene el título de la figura actual en MATLAB?
- 22. Cocoa: ¿Cómo establecer el título de la ventana?
- 23. Cómo capturar el título de una ventana de terminal en bash usando secuencias de escape ANSI?
- 24. ¿Cómo obtengo la identificación de catageory actual?
- 25. ¿Cómo obtengo la posición actual de intercalación?
- 26. ¿Cómo obtengo el nombre de usuario actual en .NET usando C#?
- 27. En Emacs, ¿podemos maximizar la ventana activa actual y restaurarla en el entorno de varias ventanas?
- 28. ¿Cómo cambiar el título de la ventana en Qt?
- 29. ¿Cómo obtengo el archivo actual, la clase actual y el método actual con Python?
- 30. Foreground Vs Ventana activa
estaba tratando de determinar qué ventana dentro de la aplicación tiene el foco o qué ventana de cualquier aplicación que tenga el foco? –
esto es relevante https://stackoverflow.com/questions/2423234/make-a-form-not-focusable-in-c-sharp/2428108#2428108 lo que si quería hacer clic en un botón para hacerlo entonces vale la pena asegurarse tu forma no toma enfoque – barlop