Как вручную вызвать «выключить дисплей»? [Дубликат]

13

Как вручную запустить функцию «выключить дисплей» в Windows 7? Обычно это происходит автоматически, когда пользователь не перемещает мышь или нажимает какие-либо клавиши в течение определенного времени (раздел управления питанием панели управления).

Стороннее программное обеспечение или полноценное приложение - это хорошо, но я бы предпочел подход, родной для Windows 7. Как командная строка или что-то в этом роде.

user1306322
источник
Времена ниже минуты для режима сна монитора? Это помогло бы при применении этого метода: answers.microsoft.com/en-us/windows/forum/windows_7-desktop/...
Andrestand

Ответы:

8

Этот скрипт, написанный на Powershell, может сделать эту работу для вас.

# Turn display off by calling WindowsAPI.

# SendMessage(HWND_BROADCAST,WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF)
# HWND_BROADCAST  0xffff
# WM_SYSCOMMAND   0x0112
# SC_MONITORPOWER 0xf170
# POWER_OFF       0x0002

Add-Type -TypeDefinition '
using System;
using System.Runtime.InteropServices;

namespace Utilities {
   public static class Display
   {
      [DllImport("user32.dll", CharSet = CharSet.Auto)]
      private static extern IntPtr SendMessage(
         IntPtr hWnd,
         UInt32 Msg,
         IntPtr wParam,
         IntPtr lParam
      );

      public static void PowerOff ()
      {
         SendMessage(
            (IntPtr)0xffff, // HWND_BROADCAST
            0x0112,         // WM_SYSCOMMAND
            (IntPtr)0xf170, // SC_MONITORPOWER
            (IntPtr)0x0002  // POWER_OFF
         );
      }
   }
}
'

[Utilities.Display]::PowerOff()

Примечание . Для этого совета требуется PowerShell 2.0 или выше.

STDERR
источник
@ user1306322 Правильно. Заставка не выключает дисплей.
Ланс
@ user1306322 Ответ обновлен.
stderr
Из-за отсутствия лучшего ответа я принимаю этот. Следует отметить, что это полезно только тогда, когда вы не взаимодействуете с компьютером. То есть, чтобы экран оставался выключенным, вам нужно перестать касаться каких-либо кнопок или мыши. Установка таймера на секунду или две перед выполнением этой команды может быть очень полезна.
user1306322
6

Не нативное решение - требуется бесплатная внешняя программа Nircmd . Но это довольно полезно и не требует ничего, чтобы его использовать.

Чтобы выключить монитор:

nircmd.exe monitor off

Чтобы включить монитор:

nircmd.exe monitor on
VL-80
источник
4

Я пользуюсь Monitor Off Utility уже несколько лет. Я назначил комбинацию клавиш и нажимаю ее, если хочу отключить отображение.

введите описание изображения здесь

введите описание изображения здесь

magicandre1981
источник
Не уверен, почему ответ был отклонен. Нейтрализация эффекта, так как утилита делает то, что хочет OP
Ejaz
Разве на самом деле такое программное обеспечение не выполняет то, что может делать какая-то команда? Нет команды для редактирования таймера выключения?
Andrestand
@ И принятый ответ показывает, какой API используется инструментом для внутренних целей.
magicandre1981
-1

Пытаться

%SystemRoot%\System32\RUNDLL32 %SystemRoot%\System32\USER32.DLL,LockWorkStation

Возможно, вам придется зайти в панель управления и настроить экранную заставку на «нет».

Скотт
источник
Это делает только то, что LockWorkStationпредлагает имя команды - блокирует сеанс текущего пользователя. Этого же эффекта можно достичь, нажав [Win] + [L].
user1306322