我需要运行一个vb程序,它会将来自不同生产数据库的所有数据复制到我们的报告数据库中。它将运行至少5个小时。所以为了防止机器进入睡眠状态,我如何在指定的时间间隔内将鼠标光标移动1像素。根据我的客户公司法律,我无法在计算机电源设置中执行此操作。所以我试图在我的程序中做。
我尝试使用sendkeys,即在指定的时间间隔发送箭头,但这对我造成了问题
提前致谢
答案 0 :(得分:2)
试试这个
Enum Execution_State
ES_SYSTEM_REQUIRED = &H1
ES_DISPLAY_REQUIRED = &H2
ES_USER_PRESENT = &H4
ES_CONTINUOUS = &H80000000
End Enum
Declare Sub SetThreadExecutionState Lib "kernel32" (ByRef esFlags As EXECUTION_STATE)
Public Sub DoNotSleep()
SetThreadExecutionState(esFlags:=Execution_State.ES_SYSTEM_REQUIRED Or Execution_State.ES_DISPLAY_REQUIRED Or Execution_State.ES_CONTINUOUS)
End Sub
从http://forums.codeguru.com/showthread.php?492366-How-to-run-a-very-long-SQL-statement
中挑选答案 1 :(得分:1)
为什么不直接使用标准VB6 SysInfo控件的PowerQuerySuspend Event ?
这允许您的程序取消自动休眠甚至是用户启动的睡眠请求(与较早的SetThreadExecutionState
API调用不同)。