¿Estaba tratando de determinar qué ventana dentro de su aplicación tiene el foco o qué ventana de cualquier aplicación tiene el foco?
Peder Rice
esto es relevante stackoverflow.com/questions/2423234/… por lo que si desea hacer clic en un botón para hacerlo, vale la pena asegurarse de que su formulario no se enfoque.
Barlop
Respuestas:
165
Vea un ejemplo de cómo puede hacer esto con el código fuente completo aquí:
una nota newb, para que se ejecute, using System.Runtime.InteropServices; y vuelva a colocar las líneas dll import y static extern. pegarlo dentro de la clase
barlop
1
@smink Cómo obtener una ventana de primer plano activa para un usuario específico (digamos que el proceso se ejecuta como servicio).
Si toda la aplicación no está activa (otro programa tiene el foco), ninguna ventana tendrá IsActive establecido en verdadero.
Todd
En realidad, eso podría estar mal, en mi caso, estaba tratando de acceder a la matriz de Windows en un hilo que no es de UI. Sin embargo, vea esto también en caso de que todavía tenga
Todd
4
Da un vuelco Application.Current.Windows[]y encuentra el que tiene IsActive == true.
¿No funcionaría esto solo para las ventanas de 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 pertenece.
Quagmire
3
Utilice la API de Windows. Llame GetForegroundWindow().
GetForegroundWindow()le dará un identificador (con nombre hWnd) para la ventana activa.
puedes usar la clase de proceso, es muy fácil. usa este espacio de nombres
using System.Diagnostics;
si desea hacer un botón para activar la ventana.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Respuestas:
Vea un ejemplo de 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/
Editado con los comentarios de @Doug McClean para una mejor corrección.
fuente
using System.Runtime.InteropServices;
y vuelva a colocar las líneas dll import y static extern. pegarlo dentro de la claseSi estaba hablando de WPF, use:
fuente
Da un vuelco
Application.Current.Windows[]
y encuentra el que tieneIsActive == true
.fuente
Utilice la API de Windows. Llame
GetForegroundWindow()
.GetForegroundWindow()
le dará un identificador (con nombrehWnd
) para la ventana activa.Documentación: función GetForegroundWindow | Documentos de Microsoft
fuente
Basado en la función GetForegroundWindow | Documentos de Microsoft :
Admite caracteres UTF8.
fuente
Si sucede que necesita el formulario activo actual de su aplicación MDI : (MDI- Interfaz de documentos múltiples).
fuente
puedes usar la clase de proceso, es muy fácil. usa este espacio de nombres
si desea hacer un botón para activar la ventana.
fuente