o movimento do rato em 'powershell' não impede o modo inactivo
[System.Windows.Forms.Cursor]::Position = `
New-Object System.Drawing.Point($pos.X, ($pos.Y - 1))
[System.Windows.Forms.Cursor]::Position = `
New-Object System.Drawing.Point($pos.X, $pos.Y)
O que quero alcançar?
bem, quero mover o cursor do rato a cada 4 minutos para evitar que o protector de ecrã apareça (a cada segundo no código acima para testes). O código realmente move o mouse cada vez que um pixel para cima e depois para baixo imediatamente. A coisa é, o screensaver (ou modo de marcha lenta das janelas) ainda está aparecendo.
Agora, estou aprendendo PowerShell e eu tenha pouca experiência com a arquitetura Windows. Alguém vê o meu erro? Gostaria muito de ter uma resposta! :D Obrigado antecipadamente.4 answers
A solução do blog impede o bloqueio do ecrã ou o protector de ecrã com o PowerShell está a funcionar para mim. Aqui está o script relevante, que simplesmente envia um único período para a shell:
param($minutes = 60)
$myshell = New-Object -com "Wscript.Shell"
for ($i = 0; $i -lt $minutes; $i++) {
Start-Sleep -Seconds 60
$myshell.sendkeys(".")
}
E uma alternativa dos comentários, que move o rato um único pixel:
$Pos = [System.Windows.Forms.Cursor]::Position
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point((($Pos.X) + 1) , $Pos.Y)
param($minutes = 120)
$myShell = New-Object -com "Wscript.Shell"
for ($i = 0; $i -lt $minutes; $i++) {
Start-Sleep -Seconds 30
$myShell.sendkeys(" ")
}
Esta função funcionará para os 120 minutos (2 Horas), mas pode ser modificado para o tempo desejado, aumentando ou diminuindo os segundos da entrada, ou aumentando ou diminuindo o valor atribuído a minutos de parâmetro.
Basta executar o script em powershell ISE, ou powershell, e abrir o bloco de notas. Será introduzido um espaço no intervalo indicado para o período de tempo desejado ($minutos). Boa Sorte!Add-Type -AssemblyName System.Windows.Forms
$position = [System.Windows.Forms.Cursor]::Position
$position.X++
[System.Windows.Forms.Cursor]::Position = $position
while(1) {
$position = [System.Windows.Forms.Cursor]::Position
$position.X++
[System.Windows.Forms.Cursor]::Position = $position
$time = Get-Date;
$shorterTimeString = $time.ToString("HH:mm:ss");
Write-Host $shorterTimeString "Mouse pointer has been moved 1 pixel to the right"
#Set your duration between each mouse move
Start-Sleep -Seconds 150
}