Ho un'applicazione autoadesiva a schermo intero per Windows 7 scritta in C++ che dovrebbe funzionare a lungo da sola come presentazione pubblica.Windows 7: Impedisci all'applicazione di perdere lo stato attivo
Il problema è che ci sono diverse applicazioni o driver o Windows stesso che rubano di tanto in tanto l'attenzione e/o in particolare all'avvio del sistema. Il risultato è: la mia applicazione a schermo intero viene minimizzata.
È molto fastidioso e quasi impossibile scoprire sempre quali cose si devono disattivare per impedirlo. Soprattutto perché a volte è necessario concentrarsi su ciò che ruba cose, ad es. driver touchscreen.
Cosa posso fare per evitare di perdere la messa a fuoco?
O meglio ancora: come impedire ad altre applicazioni di rubare lo stato attivo - Ricordo che una volta c'era una tale impostazione in TweakUI per Windows XP.
Una buona risposta, ma sfortunatamente non risolve il mio problema. Presumo che il problema non sia un'applicazione che tenta di impostare una finestra già esistente per il forground che è prevenuta di default in Windows 7, credo. Ma è qualcosa che crea una finestra temporanea tramite shellexec o qualcosa del genere. Alcuni processi di background programmati male da un driver o un aggiornamento automatico o qualsiasi altra cosa. La cosa brutta è che non ho un facile accesso al computer del player :-( –
LockSetForegroundWindow dovrebbe bloccare questo scenario.Tuttavia, il blocco impostato tramite LockSetForegroundWindow viene cancellato quando l'utente preme Alt o fa clic su un'altra finestra, quindi devi tieni d'occhio –
La tua soluzione funziona. Ho fatto un errore con SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT ...) perché non mi ero reso conto che devi passare il valore tramite il valore del parametro pointer sebbene ci sia un parametro intero (che è strano, ovviamente) –