Como transformar screensaver em (Windows 7) por um código (cmd)? [fechadas]
-
07-07-2019 - |
Pergunta
Como transformar screensaver em (Windows 7) por um código (cmd)?
Solução 5
using System;
using System.Runtime.InteropServices;
public static class LockDesktop
{
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
private static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
private const int SC_SCREENSAVE = 0xF140;
private const int WM_SYSCOMMAND = 0x0112;
public static void SetScreenSaverRunning()
{
SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0);
}
public static void Main()
{
LockDesktop.SetScreenSaverRunning();
}
}
Isso funciona -. Única desvantagem é que o retorno não podem interagir com pc para algo como 7 segundos, mas eu acho que seus 7 de dar ppl tempo antes de fazer screensaver 'permanente'
Outras dicas
Faz o seguinte atender às suas necessidades?
start logon.scr /s
Enquanto o .scr
está no caminho o comando acima deve funcionar.
EDIT:. Eu não sei se o Windows 7 vem com logon.scr
, certifique-se que você está testando-a com um .scr
que está realmente instalado no Windows 7
Note que eu tive a idéia de apenas invocando o .scr
com /s
de Screensaver Amostra Opções de linha de comando :
Quando o Windows executa o seu screensaver, ele lança-lo com um dos três comandos opções de linha:
- / s -. Iniciar o protetor de tela em modo de tela cheia
- / c -. Mostrar a caixa de definições de configuração de diálogo
- / p #### - Mostra uma pré-visualização do protetor de tela usando o especificado identificador de janela.
EDIT 2:
Eu fiz alguma pesquisa adicional e descobriu que você poderia criar lock.cmd
:
@start /wait logon.scr /s & rundll32 user32.dll,LockWorkStation
Ou lock.vbs
:
Set objShell = CreateObject("Wscript.Shell")
' The "True" argument will make the script wait for the screensaver to exit
returnVal = objShell.Run("logon.scr", 1, True)
' Then call the lock functionality
objShell.Run "rundll32.exe user32.dll,LockWorkStation"
Nenhuma dessas respostas é perfeito, ambos revelam uma centelha de área de trabalho após o protetor de tela é desativado e pouco antes da estação de trabalho que está sendo bloqueado.
Pode não ser possível reproduzir o comportamento do sistema de iniciar o protetor de tela e senha proteger no currículo. Mesmo a resposta para lançamento do sistema Screensaver de C # Windows Form só começa a proteção de tela, não senha proteger no currículo .
o script cmd
e vbs
ideias com o código de the resposta para lançamento do sistema Screensaver de C # Windows Form eu vim com o seguinte:
using System;
using System.Runtime.InteropServices;
public static class LockDesktop
{
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
private static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "LockWorkStation")]
private static extern IntPtr LockWorkStation();
private const int SC_SCREENSAVE = 0xF140;
private const int WM_SYSCOMMAND = 0x0112;
public static void SetScreenSaverRunning()
{
SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0);
LockWorkStation();
}
public static void Main()
{
LockDesktop.SetScreenSaverRunning();
}
}
Para construí-lo, instalar o .NET Framework, copie e cole o código acima na lock.cs
, em seguida, execute:
%SystemRoot%\Microsoft.NET\Framework\v3.5\csc.exe lock.cs
Coloque o lock.exe
criado em seu caminho, depois disso, digitação lock
deve envolver o protetor de tela configurados e bloquear sua estação de trabalho.
Eu tenho o Windows 7. Eu coloquei a linha:
@start / wait% windir% \ ExtraPath \ ScreenSaverName.scr / s & rundll32 user32.dll, LockWorkStation
em um arquivo de lote (.bat), coloque-o em um dir apropriado, e criou um atalho que aponta para isso, com a tecla de atalho desejado. Nesta linha, \ ExtraPath é o caminho adicional sob a sua vitória dir (geralmente este é \ system32), onde os protetores de tela estão localizados e ScreenSaverName.scr é o nome da tela desejado saver si.
Ele funciona perfeitamente.
Agora eu pode pressionar as teclas de atalho para executar o protetor de tela e bloquear o pc.
Graças realmente muito.
Você poderia tentar Powershell script para iniciar A Random Screen Saver .