Можно ли перевести один монитор в спящий режим с помощью WinAPI / C #? - PullRequest
8 голосов
/ 14 декабря 2010

Используя Windows API, можно перевести мониторы в спящий режим:

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

, а затем

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

При выполнении вышеуказанной команды оба монитора переходят в спящий,Можно ли сделать так, чтобы это влияло только на один из нескольких подключенных мониторов?

Ответы [ 2 ]

2 голосов
/ 20 декабря 2010

Точно, я не знаю, можете ли вы перевести в спящий режим определенный монитор ... но вы можете добиться этого, изменив количество дисплеев на Один (при условии, что у вас 2), которые вы хотите активировать Другой автоматически переходит в спящий режим примерно через минуту (большинство мониторов переходят в режим энергосбережения примерно через минуту после отключения). Вы по существу отключаете монитор программно. Вы можете активировать его, когда вам это нужно.

Однако этот метод будет иметь другие последствия, о которых вы узнаете, как только начнете с ним играть.

2 голосов
/ 14 декабря 2010

Согласно это ... нет.

Причина в том, что API отключает дисплей, который определяется как оба монитора.Отключение определенного монитора будет связано с аппаратным обеспечением.

...