Tengo una aplicación C# winforms que se ejecuta en segundo plano, esperando que se presionen las teclas rápidas. Cuando se presiona una tecla rápida, mi forma hace una breve aparición. El formulario siempre se está ejecutando, pero se establece en oculto hasta que reciba un evento de tecla de acceso rápido, en ese momento establecí la propiedad visible en verdadero. El código se ve así:¿Cómo evitar que mi aplicación C# winforms robe el foco cuando establezco el visible correctamente en verdadero?
void hook_volumeDown(object sender, KeyPressedEventArgs e)
{
this.Visible = true;
}
Cabe señalar que la propiedad superior de este formulario se establece en verdadero.
La parte realmente extraña es que, después de que mi aplicación C# ha robado el foco de otra aplicación, nunca volverá a hacerlo. Por ejemplo: inicio mi aplicación, luego lanzo una aplicación fullscreep como Team Fortress 2. Luego presiono mi tecla de acceso directo. Team Fortress 2 se minimiza, y veo mi forma. Entonces, sin embargo, puedo restaurar TF2, y presionar mi tecla de acceso de nuevo todo lo que quiero (con el efecto deseado), y TF2 permanecerá enfocado.
En cualquier caso, estoy buscando una manera de arreglar esto. He encontrado muchas preguntas aquí que cubren problemas similares, pero todas están relacionadas con la creación/lanzamiento de un nuevo formulario, sin hacer que uno existente sea visible (a menos que me haya perdido algo). Podría volver a trabajar la aplicación para crear un nuevo formulario cada vez que lo necesite, pero eso implicaría crear otra forma de ser invisible todo el tiempo solo para esperar los eventos de teclas de acceso rápido, así que preferiría dejarlo como está.
¿Alguna idea?
No estoy seguro de seguir ... ¿estás diciendo que funciona como debería * excepto * por primera vez? –