2011-09-15 2 views
14

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.

risposta

20

Tweak UI cambia cambiando il SPI_SETFOREGROUNDLOCKTIMEOUT. È possibile combinare questo con LockSetForegroundWindow.

+1

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 :-( –

+3

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 –

+0

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) –