2010-12-14 38 views
8

En utilisant l'API Windows, il est possible de mettre les moniteurs en mode veille:Est-il possible de mettre un seul moniteur en veille en utilisant WinAPI/C#?

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

puis

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

Lors de l'exécution de la commande ci-dessus, les deux moniteurs vont dormir. Est-il possible de faire cela affecter seulement l'un des moniteurs connectés multiples?

Répondre

2

Exactement, je ne sais pas si vous pouvez mettre en veille un moniteur spécifique .. mais vous pouvez y parvenir en changeant le nombre d'affichages à un (en supposant que vous avez 2), que vous voulez être éveillé. L'autre se met automatiquement en veille après environ une minute (la plupart des moniteurs passent en mode d'économie d'énergie environ une minute après la déconnexion). Vous déconnectez essentiellement le moniteur, par programmation. Vous pouvez l'activer quand vous en avez besoin. Cependant, cette méthode aura d'autres implications, que vous saurez quand vous commencerez à jouer avec.

+0

Comme les fenêtres sur le deuxième moniteur étant déplacé :) – Basic

+0

@ Eerlend: Si vous avez atteint cela .. pouvez-vous poster sur la façon dont vous l'avez rendu possible .. Je cherche actuellement une solution similaire .. Et tandis que je l'ai suggéré un approche .. en essayant de trouver comment vous l'avez fait fonctionner .. si du tout .. – Bhuvan

+0

Malheureusement, je ne pouvais pas y parvenir. –

2

Selon this ... no.

La raison en est que l'API éteint l'affichage qui est défini comme les deux moniteurs. Désactiver un moniteur spécifique serait un lien matériel.