我试图阻止我的电脑进入空闲模式。所以我正在尝试编写一个可以摆动鼠标的脚本。这是我发现的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。