2011-08-29 23 views
6

Estoy usando un formulario simple generado por VS 2010 que contiene 2 botones, inicio y parada. El inicio activa WH_MOUSE_LL usando SetWindowsHookEx, y detiene el enganche. El gancho funciona bien y puedo "reemplazar" el botón central del mouse haciendo clic con doble clic, el único problema que tengo es hacer clic en Minimizar/Maximizar/Cerrar botones del formulario, parece que hay algún tipo de "carrera de evento" entre el gancho y los eventos llamados por los botones mencionados anteriormente. Refleja el hecho de que cuando presiona uno de esos botones, se "presiona" durante un tiempo antes de que complete su acción (por ejemplo, la forma se minimiza). Cuando hago clic con el botón secundario en el formulario y selecciono una de esas acciones, responde de inmediato que lo mismo sucede cuando paro el gancho y presiono uno de los botones mencionados anteriormente. ¿Alguien ha encontrado tal comportamiento?C# gancho de mouse de bajo nivel y manejo de evento de formulario

+3

Mi primer instinto es que probablemente esté utilizando la herramienta incorrecta para el trabajo; no puedo pensar en muchas circunstancias en las que debería necesitar usar un gancho de Windows. Tal vez, ¿podría volver al problema que le llevó a implementar esta solución y, en cambio, publicó una pregunta sobre eso? –

+1

Hola, hasta donde sé y investigué bastante antes de abordar este método, si quiero que mi mouse genérico produzca doble clic cuando hago clic en el botón central del mouse, "medio", hago clic en el medio y simulo dos clics izquierdos al mismo x, y del mouse y si quiero que funcione incluso cuando mi aplicación. no está enfocado o minimizado (o en la bandeja del sistema) el gancho es la única forma. De todos modos, soy más programador de c/C++. Solo quería usar C# porque es simple crear una GUI. – Alex

+1

@Alex: su investigación lo llevó a una conclusión incorrecta. Simplemente capture el botón central del mouse y realice el mismo evento como un evento de mouse con doble clic (que realmente es solo un evento de un solo clic). Además, no todos los ratones tienen el botón central del ratón, así que ten cuidado con eso. –

Respuesta

2

Lo he experimentado antes también. No estoy seguro de la causa exacta, pero siempre he resuelto el problema escuchando eventos que se disparan cuando el mouse entra y sale del área del cliente del formulario, ventana, lo que sea. Puede usar esos eventos para enganchar y desenganchar el mouse, y luego obtendrá el comportamiento normal.

Cuestiones relacionadas