2010-12-14 5 views
8

Utilizzando l'API di Windows, è possibile mettere i monitor in modalità di sospensione:E 'possibile mettere un singolo monitor in sleep usando WinAPI/C#?

[DllImport("user32.dll")] 
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); 

e poi

SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)2); 

Quando si esegue il comando precedente, entrambi i monitor di andare a dormire. È possibile rendere questo effetto solo su uno dei monitor connessi multipli?

risposta

2

Esattamente non so se riesci a mettere in stato di sonno un monitor specifico .. ma puoi farlo cambiando il numero di display su Uno (supponendo che tu abbia 2), che vuoi essere sveglio. L'altro si spegnerà automaticamente dopo circa un minuto (la maggior parte dei monitor entra in modalità risparmio energetico dopo circa un minuto dopo la disconnessione). Stai essenzialmente disconnettendo il monitor, in modo programmatico. Puoi attivarlo quando ne hai bisogno.

Tuttavia questo metodo avrà altre implicazioni, che saprete quando inizierete a giocarci.

+0

Come le finestre sul secondo monitor spostato :) – Basic

+0

@Erlend: Se hai ottenuto questo .. puoi pubblicare su come hai reso possibile .. Al momento sto cercando una soluzione simile .. E mentre ho suggerito un approccio .. cercando di trovare come hai funzionato .. se proprio .. – Bhuvan

+0

Purtroppo, non ho potuto ottenere questo. –

2

Secondo this ... no.

Il motivo è che l'API sta disattivando il display che è definito come entrambi i monitor. Spegnere un monitor specifico sarebbe un pareggio hardware.