Ho un'applicazione C# winforms che viene eseguita in background, in attesa che vengano premuti i tasti di scelta rapida. Quando viene premuto un tasto di scelta rapida, la mia forma fa una breve apparizione. Il modulo è sempre in esecuzione, ma impostato su nascosto fino a quando non ricevo un evento hotkey, momento in cui imposto la proprietà visible su true. Il codice è simile al seguente:Come impedire alla mia applicazione Winforms C# di rubare lo stato attivo quando imposto correttamente il visibile su true?
void hook_volumeDown(object sender, KeyPressedEventArgs e)
{
this.Visible = true;
}
Si noti che la proprietà più in alto di questo modulo è impostata su true.
La parte davvero strana è che, dopo che la mia app C# ha rubato lo stato attivo da un'altra applicazione, non lo farà mai più. Ad esempio: avvio la mia app, quindi lancio alcune app fullscreep come Team Fortress 2. Quindi premo il mio tasto di scelta rapida. Team Fortress 2 minimizza e vedo la mia forma. Quindi, tuttavia, posso ripristinare TF2 e premere di nuovo il mio tasto di scelta rapida tutto ciò che desidero (con l'effetto desiderato) e TF2 rimarrà concentrato.
In ogni caso, sto cercando un modo per risolvere questo problema. Ho trovato un sacco di domande qui che trattano problemi simili, ma tutti sono legati alla creazione/al lancio di un nuovo modulo, non rendendo visibile uno esistente (a meno che non mi sia sfuggito qualcosa). Potrei rielaborare l'applicazione per creare un nuovo modulo ogni volta che ne ho bisogno, ma ciò implicherebbe la creazione di un altro modulo per essere sempre invisibile solo per aspettare gli eventi hotkey, quindi preferirei lasciarlo così com'è.
Qualche idea?
Non sono sicuro che seguo ... stai dicendo che funziona come dovrebbe * tranne * per la prima volta? –