2009-05-05 19 views
15

Estoy tratando de ayudar a una persona discapacitada con un poco de código para ayudarlo a jugar un juego más fácil. Él está limitado a una rueda de desplazamiento y un solo botón.Prevenir Cambio de foco de ventana

Actualmente usa el teclado en pantalla y ha logrado jugar otros juegos usándolo. Creé un pequeño código para intentar facilitar su vida. Utiliza los botones de desplazamiento para las teclas. Cuando el puntero del mouse ingresa al botón, envía la tecla hacia abajo, cuando se mueve fuera del botón, envía la tecla hacia arriba.

Tengo que funcionar y creo (o espero) que le va a gustar. Funcionó bastante bien cuando lo probé.

Quiero agregarle una pieza más de funcionalidad. Si hace clic mientras está sobre mi control, quiero enviar un golpe de tecla diferente. No hay problema, puedo hacer eso. Sin embargo, cuando hago esa ventana el foco cambia del juego a mi control.

He encontrado esto en MSDN:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/48737c2b-7e6f-4ade-ac1c-7dd2f5cc2b88/

que trabaja para prevenir la activación de mi ventana, pero todavía hace que el juego pierda la concentración. Puedo volver a enfocar el juego, pero preferiría que nunca perdiera el foco.

Estoy codificando en C# y WPF.

¿Alguien tiene alguna idea sobre cómo puede hacer eso?

John Fenton

+0

Pruebe esta página: http://stackoverflow.com/questions/2444842/ keeping-an-application-on-top-and-in-focus-always/3338447#3338447 – MonkeyWrench

+0

Eso no funcionaría, MonkeyWrench. Eso mantendría tu ventana en la parte superior, pero no evitaría que robe el foco del juego. –

Respuesta

2

gancho en algunos ratón y teclado ganchos nivel bajo, y su aplicación no tendrán que robar el foco y dar de nuevo.

Eche un vistazo a this pastie of a simple WPF app, que se basa principalmente en an article by Stephen Toub.

Cada vez que hace clic izquierdo, en cualquier lugar, se envía un segundo clic izquierdo, por lo que efectivamente hace doble clic. Puede lograr su objetivo ocultando su aplicación cada vez que el usuario haga clic, para que su aplicación nunca le robe el foco. Luego, detecte la ubicación del clic y decida si uno de sus botones se habría presionado y actúe en consecuencia.

Me doy cuenta de que estoy sacando esto del pasado, pero espero que a alguien le resulte útil esta respuesta. Saludos, ¡y bueno para ti por convertir tu programación para ayudar a un compañero humano!

Cuestiones relacionadas