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
6
A
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
- 1. Comprensión del gancho de mouse y teclado de bajo nivel (win32)
- 2. Teclados múltiples y ganchos de bajo nivel
- 3. ¿Qué puede hacer que Windows desenganche un gancho de teclado de bajo nivel (global)?
- 4. Programación Bluetooth de bajo nivel en C++
- 5. ¿En qué hilo se ejecuta una devolución de llamada de enganche de mouse y teclado de bajo nivel?
- 6. de bajo nivel Lua intérprete
- 7. Qt: widget de nivel superior con transparencia de evento de teclado y mouse?
- 8. No se ha llamado al gancho del teclado de nivel bajo en la aplicación .NET
- 9. Generación de sonido real de bajo nivel en C#?
- 10. nivel bajo Hooker
- 11. Cómo leer la posición de bajo nivel del clic del mouse en Linux.
- 12. Entrada y redirección de consola de bajo nivel
- 13. OpenGL preguntas de rendimiento de bajo nivel
- 14. NotifyIcon.BalloonTipClich evento y botones del mouse
- 15. Aplicación multi-nivel de manejo de transacciones
- 16. ¿Reemplazo para la programación de bajo nivel C?
- 17. Manejo de eventos de mouse en la ventana transparente condicionalmente
- 18. C y sugerencia de proyecto de ensamblaje necesaria para clase en software de bajo nivel
- 19. Manejo de eventos del mouse con cvSetMouseCallback
- 20. manejo de cuencas en SAS bajo OpenVMS
- 21. Aprendiendo acerca de la programación de gráficos de bajo nivel
- 22. Tapestry5: manejo de múltiples botones de envío con evento de validación de formulario
- 23. Evento de mouse movido dentro de JPanel
- 24. ¿Qué es Javascript de bajo nivel?
- 25. Quiero saber la diferencia entre las funciones de nivel bajo y las funciones de nivel superior
- 26. Uso y manejo de tokens de formulario PHP
- 27. Evento de rueda de mouse 'ficticio' desencadenante
- 28. Obtiene elemento (s) WPF bajo el mouse
- 29. Cómo capturar los movimientos del mouse C# formulario de aplicación?
- 30. ¿Cuál es su herramienta favorita de perfil de bajo nivel?
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? –
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
@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. –