El envío de un ratón haga clic en un botón en la barra de tareas, el uso de C#
Pregunta
En una aplicación que estoy trabajando actualmente, un requisito es traer a una ventana de una aplicación externa para el primer plano.Hacer llamadas a la API Win32, tales como BringWindowToTop y SetForeground ventana no funcionan todo el tiempo.Esto es debido a algunas restricciones en Windows XP.Lo que me gustaría hacer en su lugar es enviar simular un clic de ratón en la ventana del botón en la barra de tareas, que yo estoy esperando que traerá la ventana al frente.¿Alguien sabe cómo es esto posible?
Solución
Consulta la sección "Cómo robar el foco en 2K/XP" en http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx, como esto es exactamente lo que usted necesita.Yo no iría a la barra de tareas de la ruta como la barra de tareas podrían estar ocultos o simplemente no existen.
Otros consejos
Es posible.Pero es muy superficiales.La aplicación también se puede romper con la próxima versión de Windows, ya que es indocumentado.Lo que usted necesita hacer es encontrar el identificador de ventana de la barra de tareas, a continuación, busque el identificador de ventana de la ventana secundaria que representan el botón, a continuación, enviar un WM_MOUSEDOWN (creo) mensaje.
He aquí un poco en encontrar el identificador de ventana de la barra de tareas:
FWIW, las restricciones en el BringWindowToTop/SetForeground están ahí porque es irritante cuando una ventana roba el foco.Que no importa si estás trabajando en un entorno corporativo.Sólo ten en mente.:)
He utilizado esto en un programa en el que necesitaba para simular clics y movimientos del ratón;
Para ser honesto, nunca he tenido un problema trayendo una ventana de primer plano en XP/Vista/2003/2000.
Usted necesita para asegurarse de que hacer lo siguiente:
- Compruebe si IsIconic (minimizado)
- Si #1 resultados en true, entonces la llamada ShowWindow pasando SW_RESTORE
- A continuación, llame SetForegroundWindow
Nunca he tenido problemas de que se me ocurre de hacerlo con los pasos.