Powershell脚本,防止计算机进入空闲状态

时间:2017-08-12 05:39:28

标签: python powershell automation ui-automation

我试图阻止我的电脑进入空闲模式。所以我正在尝试编写一个可以摆动鼠标的脚本。这是我发现的PowerShell脚本的略微定制版本。

param($cycles = 60)


Add-Type -AssemblyName System.Windows.Forms
$screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
for ($i = 0; $i -lt $cycles; $i++) {

Start-Sleep -Seconds 3

[Windows.Forms.Cursor]::Position = "$($screen.Width),$($screen.Height)"
Start-Sleep -Seconds 3

[Windows.Forms.Cursor]::Position = "$($screen.Left),$($screen.Top)"
}

虽然这会使鼠标摆动,但它不会阻止屏幕关闭。所以我写了这个:(在python中)

import ctypes, time, datetime

mouse_event = ctypes.windll.user32.mouse_event
MOUSEEVENTF_MOVE = 0x0001
print("press ctrl-c to end mouse shaker")
try:
    while True:
        mouse_event(MOUSEEVENTF_MOVE,25,0,0,0)
        time.sleep(1)
        mouse_event(MOUSEEVENTF_MOVE,0,25,0,0)
        time.sleep(1)
        mouse_event(MOUSEEVENTF_MOVE,-25,0,0,0)
        time.sleep(1)
        mouse_event(MOUSEEVENTF_MOVE,0,-25,0,0)
        time.sleep(1)
except KeyboardInterrupt:
    pass

此python代码将使我的屏幕无法进入休眠状态并防止机器空闲。我相信这个问题是因为在powershell脚本中我从不向os发送“MOUSEEVENTF_MOVE = 0x0001”字符串。根据Microsoft website,变量MOUSEEVENTF_MOVE是表示鼠标已移动的标志。

此外,我发现这个问题(How i can send mouse click in powershell)似乎正在做这件事,但也是点击,这是我不想要的。我已经尝试过评论这些行,但我认为“SendImput”期待一些输入导致它失败。

所以这是我的问题。如何在powershell代码中传递MOUSEEVENTF_MOVE变量?我认为它应该与我的python代码具有相同的效果。

P.S。这是我第一次使用PowerShell。

0 个答案:

没有答案