2011-05-29 25 views
5

estoy haciendo una aplicación de C# WPF, y cada vez que el usuario hace clic en algún lugar fuera de mi solicitud, yo quiero mostrar una alerta con el título de la ventana hace clic. Para detectar clics fuera de mi aplicación, estoy usando LowLevelMouseProc. Pero, ¿cómo obtendría la ventana que tiene foco en C#?C# ¿Cómo enfocar la ventana?

¡Gracias de antemano!

EDIT: Sé que esto no está relacionado con mi pregunta original, pero ¿cómo conseguiría el control enfocado, también?

+0

a la segunda pregunta: es probable que necesite una función ['GetFocus()'] (http://msdn.microsoft.com/en-us/library/ms646294%28v=vs.85%29.aspx) - leer Comentarios en esa página de MSDN –

+0

¿Está seguro de que solo desea detectar cuándo el usuario * hace clic * fuera de su aplicación? Los usuarios también pueden usar el teclado para cambiar de ventana. Es posible que intente buscar en el mensaje WM_ACTIVATE: http://stackoverflow.com/questions/813356/determine-where-activation-is-going-when-a-form-is-deactivated (Winforms, pero la misma idea básica que funciona para WPF también cuando obtienes los HWND de las ventanas de WPF) –

Respuesta

3

Respecto a su pregunta de seguimiento sobre cómo obtener el control con enfoque, puede obtener el HWND del control enfocado usando GetGUIThreadInfo. Tenga en cuenta que pasa este subproceso que posee la ventana externa, no la ventana externa propiamente dicha (los documentos de función le dicen cómo obtener el ID de subproceso desde el controlador de ventana externa). El HWND enfocado se devuelve a través del miembro GUITHREADINFO.hwndFocus.

Tenga en cuenta que, en general, no se puede hacer mejor que un HWND, porque la ventana de primer plano no es necesariamente una aplicación .NET. Por ejemplo, si la ventana exterior es una ventana de WPF, esto no le dirá lo que el control de WPF dentro de esa ventana tiene el foco, ya que los controles de WPF no tienen HWNDs.

6

GetForegroundWindow debe hacerlo.

+0

¡Gracias, eso funciona! Sé que esto no está relacionado con mi pregunta original, pero ¿cómo puedo enfocar el control también? – mattsven

Cuestiones relacionadas