Como acionar manualmente “desligar a tela”? [duplicado]

13

Como acionar manualmente a função "desativar a exibição" no Windows 7? Isso normalmente acontece automaticamente quando o usuário não move o mouse ou pressiona qualquer tecla por um determinado período de tempo (seção de gerenciamento de energia do painel de controle).

Software de terceiros ou um aplicativo completo é bom, mas eu preferiria uma abordagem nativa do Windows 7. Como uma linha de comando ou algo assim.

user1306322
fonte
Vezes abaixo do minuto para a opção de suspensão do monitor? Isso ajudaria na aplicação desse método: answers.microsoft.com/en-us/windows/forum/windows_7-desktop/…
Andrestand

Respostas:

8

Esse script escrito em Powershell pode fazer isso funcionar para você.

# 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()

Nota : Esta dica requer o PowerShell 2.0 ou superior.

stderr
fonte
@ user1306322 Correto. O protetor de tela não desliga a tela.
lance
@ user1306322 A resposta foi atualizada.
stderr
Pela falta de uma resposta melhor, estou aceitando esta. Observe que isso só é útil quando você não está interagindo com o computador. Ou seja, para manter a tela desligada, é necessário parar de tocar em qualquer botão ou mouse. Configurar um cronômetro por um segundo ou dois antes de executar este comando pode ser de grande utilidade.
user1306322
6

Solução não nativa - requer o programa externo gratuito Nircmd . Mas é bastante útil e não leva nada para usá-lo.

Para desligar o monitor:

nircmd.exe monitor off

Para ligar o monitor:

nircmd.exe monitor on
VL-80
fonte
4

Uso o Monitor Off Utility por vários anos. Atribua uma combinação de atalhos e pressione-a se desejar desativar a exibição.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

magicandre1981
fonte
Não sei por que a resposta foi reduzida. Neutralizando o efeito desde o utilitário faz o OP quer
Ejaz
Realmente esse tipo de software não está fazendo algo que algum comando poderia fazer? Nenhum comando para editar o cronômetro de desligamento?
Andrestand
@Andrestand a resposta aceita mostra qual API é usada internamente pela ferramenta.
magicandre1981
-1

Experimentar

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

Pode ser necessário ir ao Painel de Controle e configurar o protetor de tela como "nenhum".

Scott
fonte
Isso faz apenas o que o LockWorkStationnome do comando sugere - bloqueia a sessão do usuário atual. O mesmo efeito pode ser alcançado pressionando [Win] + [L].
user1306322