本文已参与「新人创作礼」活动,一起开启掘金创作之路。
电脑默认一段时间会关闭监视器或者硬盘,即便设置电源都选择从不也好像不太好使,导致远程的时候时常出问题,比如qq自动远程协助没反应。于是我想到用vb写一个小工具不停的移动鼠标,让电脑以为一直有人在使用,这样就不会锁屏或者待机了。
原理就是使用windows的api函数移动鼠标,本案例是基于clswindow开发的,这个是vb下的一个框架,主要是用于控制第三方程序的。主要代码:
Private Sub Command1_Click()
Dim w As New clsWindow
Randomize
Do
x1 = Screen.Width / 15 * Rnd
y1 = Screen.Height / 15 * Rnd
w.SetCursor x1, y1 '随机移动到屏幕内任意一个点
w.Wait 5000 '等待5秒钟
Loop
End Sub
花样搞多点,随机画圆、画线啥的:
Option Explicit
Dim isDraw As Boolean
Private Sub Command1_Click()
Command1.Enabled = False
Command2.Enabled = True
isDraw = True
Dim w As New clsWindow
Dim i%
Randomize
Do While isDraw
If Int(Rnd * 100) Mod 2 = 0 Then
drawACircle
Else
DrawALine
End If
w.Wait Val(Text1.Text) * 1000 '等待N秒钟
Loop
Command1.Enabled = True
Command2.Enabled = False
End Sub
'随机画个圆
Private Sub drawACircle()
Dim w As New clsWindow
Dim x As Double, y As Double
Dim sW&, sH&
Dim k As Single
Dim R As Double
sW = Screen.Width \ 15
sH = Screen.Height \ 15
Const pi As Single = 3.14159
Randomize
x = (sW - 300) * Rnd + 300
y = (sH - 500) * Rnd + 500
R = sH * Rnd + sH / 4
Me.Caption = R
Do While k < 2 * pi
w.SetCursor Cos(k) * R / 4 + x, Sin(k) * R / 4 + y, , , 5
k = k + pi / 180
DoEvents
Loop
End Sub
'随机画根线
Private Sub DrawALine()
Dim w As New clsWindow
Dim x1&, y1&, xPad&, yPad&, lngWidth&, i&, intRndType%, intRndType2%
Dim sW&, sH&
sW = Screen.Width \ 15
sH = Screen.Height \ 15
Randomize
x1 = sW * Rnd
y1 = sH * Rnd
xPad = IIf(x1 > sW / 2, -1, 1)
yPad = IIf(y1 > sH / 2, -1, 1)
lngWidth = sH * Rnd / 2 + sH / 4
intRndType = Int(Rnd * 2)
intRndType2 = Int(Rnd * 2)
For i = 1 To lngWidth
If intRndType = 0 Then
If intRndType2 = 0 Then
x1 = x1 + xPad
Else
y1 = y1 + yPad
End If
Else
x1 = x1 + xPad
y1 = y1 + yPad
End If
w.SetCursor x1, y1
w.Wait 5
Next
End Sub
Private Sub Command2_Click()
isDraw = False
End Sub
clswindow使用手册: 07 随机移动鼠标防锁屏 · clsWindow · 看云
如果不懂vb或者不懂编程的小伙伴可以直接到下面的github下载,里面的exe是编译好的,可直接运行。
完整工程打包下载: GitHub - sysdzw/PreventLockScreen: 定时让鼠标随机移动,Prevent lock screen 防止电脑自动锁屏,防止电脑休眠,防止电脑待机,