Pregunta

Básicamente, estoy buscando un IsWindowMoving llamada a la API (HWND) de Win32. Necesito saber si el usuario está moviendo actualmente una ventana.

La ventana no pertenece a mí, por lo que la escucha de WM_SYSCOMMAND / o SC_MOVE WM_MOVING no es posible (no quiero a una subclase o el gancho debido a la interoperabilidad 32/64).

¿Fue útil?

Solución

Si la ventana no pertenece a usted y usted no va a espiar los mensajes, lo mejor que puede que creo que es hacerse con un mango para esa ventana. Eso limita a lo que existes llamadas a funciones informativas que trabajan en un mango. No conozco ningún ejemplo de llamada que puede informar al usuario de que la ventana se está moviendo.

Puede estar fuera de suerte.

Otros consejos

Si no desea conectar, subclase, o cualquier otra cosa como esa, creo que la votación podría ser la forma más fácil la izquierda. Utilizando GetWindowRect puede realizar un seguimiento del anterior y actual posición y el tamaño de una ventana. Haciendo un delta le permitirá detectar si el usuario está en movimiento (o incluso el cambio de tamaño) de la ventana. Dado que se trata de la interfaz de usuario, no hay necesidad de sondear demasiado rápido (incluso 2-5 veces por segundo debe haber un montón).

Puede hacer esto con GetGUIThreadInfo - no necesita de enganche. Utilice GetWindowThreadProcessId para obtener el TID para su hwnd a continuación, comprobar los GUITHREADINFO.flags y GUITHREADINFO.hwndMoveSize para ver si la ventana está en un bucle mover / tamaño.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top