如何防止屏幕保护程序

如何防止屏幕保护程序

如何防止屏幕保护程序在 Windows XP 上运行?由于某些安全软件,我无法禁用它,但如果有一个小程序可以每 2-3 分钟模拟一些按键,那应该可以完成这项工作。

答案1

有一些免费软件可以做这个工作,

答案2

您可以运行如下所示的 PowerShell。无需安装:

Clear-Host
# Lines needed for the notification
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
Add-Type -AssemblyName System.Windows.Forms 

$form = New-Object System.Windows.Forms.Form
$Timer = New-Object System.Windows.Forms.Timer
$ContextMenu = New-Object System.Windows.Forms.ContextMenu
$MenuItem = New-Object System.Windows.Forms.MenuItem

$form.ShowInTaskbar = $false
$form.WindowState = "minimized"

$ToggleCount = 0

$WShell = New-Object -com "Wscript.Shell"

$Logfile = "$($env:userprofile)\SLJog_$(gc env:computername).log"
#Write Host $Logfile

$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 
$objNotifyIcon.Icon = "C:\Program Files\Microsoft Office\Office16\FORMS\1033\RECL.ico"
$objNotifyIcon.ContextMenu = $ContextMenu
$objNotifyIcon.ContextMenu.MenuItems.AddRange($MenuItem)
$objNotifyIcon.Text = "Scroll Lock Toggle"
$objNotifyIcon.Visible = $True

$MenuItem.Text = "Exit"
$MenuItem.add_Click({
   $Timer.Stop()
   $Timer.Dispose()
   $objNotifyIcon.Visible = $False
   LogWrite ("$($time), Reference position:X  $($global:p1.X)xY $($global:p1.Y), Current position:X $($global:p2.X)xY $($global:p2.Y),ToggleCount: $($ToggleCount) , Application exitted.")
   $form.Close()
})

$p1 = [System.Windows.Forms.Cursor]::Position
$p2 = [System.Windows.Forms.Cursor]::Position

$time = get-date -Format FileDateTime
#Write Host "ToggleCount: $($ToggleCount) , $($time) "
LogWrite ("$($time), Reference position:X  $($global:p1.X)xY $($global:p1.Y), Current position:X $($global:p2.X)xY $($global:p2.Y),ToggleCount: $($ToggleCount) , Application started")

$Timer.Interval = 300000 # (5 min)
$Timer.add_tick({Toggle-SL})
$Timer.Enabled = $true
$Timer.Start()

Function LogWrite
{
   Param ([string]$logstring)
   Add-content $Logfile -value $logstring
}

function Toggle-SL()
{
   $time = get-date -Format FileDateTime
   #Write Host "Timer toggled" 
   $global:p2 = [System.Windows.Forms.Cursor]::Position
   LogWrite ("$($time), Reference position:X  $($global:p1.X)xY $($global:p1.Y), Current position:X $($global:p2.X)xY $($global:p2.Y),ToggleCount: $($ToggleCount) , Timer triggered")

   if ($global:p1.X -ne $global:p2.X -or $global:p1.Y -ne $global:p2.Y) {
    $global:ToggleCount = 0
    LogWrite ("$($time), Reference position:X  $($global:p1.X)xY $($global:p1.Y), Current position:X $($global:p2.X)xY $($global:p2.Y),ToggleCount: $($ToggleCount) , Movement detected, togglecount zeroed")
    }
   If ($global:p1.X -eq $global:p2.X -and $global:p1.Y -eq $global:p2.Y -and $global:ToggleCount -lt 12) 
    {
    $objNotifyIcon.Icon = "C:\Program Files\Microsoft Office\Office16\FORMS\1033\CNFNOT.ico"
    $objNotifyIcon.Text = "Scroll Lock Toggle - Toggled $($global:ToggleCount) times"
    $WShell.sendkeys("{SCROLLLOCK}")
    $global:p1.X = $global:p1.X + 5
    $global:p1.Y = $global:p1.Y + 5
    [System.Windows.Forms.Cursor]::Position = $global:p1.X,$global:p1.Y
    Start-Sleep -Milliseconds 100
    $WShell.sendkeys("{SCROLLLOCK}")
    $global:p1.X = $global:p1.X - 5
    $global:p1.Y = $global:p1.Y - 5
    [System.Windows.Forms.Cursor]::Position = $global:p1.X,$global:p1.Y
     $global:ToggleCount++
     LogWrite ("$($time), Reference position:X  $($global:p1.X)xY    $($global:p1.Y), Current position:X $($global:p2.X)xY $($global:p2.Y),ToggleCount: $($ToggleCount) , SL Toggled.")
    }
  $global:p1 = [System.Windows.Forms.Cursor]::Position
  #Write Host "ToggleCount: $($ToggleCount) , $($time) "
  $objNotifyIcon.Icon = "C:\Program Files\Microsoft Office\Office16\FORMS\1033\RECL.ico"
  $objNotifyIcon.Text = "Scroll Lock Toggle - Toggled $($global:ToggleCount) times"
}

[void][System.Windows.Forms.Application]::Run($form)

相关内容