我知道这个问题之前一定被问过数百次,所以,也许,我只是做错了什么。但是我有一个我正在编写的 WinForms 程序,试图保持系统处于活动状态,以阻止它注册空闲。
我认为在我的表单上有一个计时器并做一些简单的事情,比如通过移动鼠标System.Windows.Forms.Cursor.Position
或使用该SendKeys.Send
方法就足以注册用户交互,但它没有注册为用户操作,并且仍然让系统在设置后显示为非活动状态多少时间。
我的代码相当简单......要么:
Private Sub Updater_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Updater.Tick
SendKeys.Send("+")
End Sub
或者按照以下方式做一些事情:
Private Sub Updater_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Updater.Tick
Dim MyMousePosition As Point
MyMousePosition = Windows.Forms.Cursor.Position
Windows.Forms.Cursor.Position = New Point(MyMousePosition.X - 10, MyMousePosition.Y)
End Sub
但两者都不是诀窍......我怎样才能让它工作,并且最好以一种对用户来说最不方便的方式,如果他们实际使用系统?(这意味着我不想发送一堆键,如果它们实际上处于活动状态或将鼠标移过屏幕,可能会弄乱用户)
我知道这个 coce 在 VB 中,但我很擅长 VB/C# 解决方案。
谢谢!!!
编辑
作为对这个问题的补充,我使用GetLastInputInfo
fromUser32.dll
来检查系统活动。
即使我的鼠标/键盘事件链接到该Timer_Tick
事件,GetLastInputInfo
只有在我物理移动鼠标/在计算机上执行某些操作时才会重置...
我想我的问题是
我可以添加哪些事件到我的 Timer_Tick 事件中来重置GetLastInputInfo
- 换句话说,让 Windows 相信用户实际上在机器上做了什么?
谢谢!!!