标题:如何禁止电脑进入休眠状态?
只看楼主
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
结帖率:60%
 问题点数:0 回复次数:11 
如何禁止电脑进入休眠状态?
当需要程序长时间运行的时候,电脑可能会根据电源的相关设置自动进入休眠状态,这时候程序也会停止运行了,曾尝试利用KEYBOARD功能模拟键盘动作来阻止电脑进入休眠状态,但不管用,KEYBOARD功能可以在VFP程序内模拟键盘动作,但不是真正的键盘动作,所以不会被WINDOWS系统侦测到,不认为是键盘动作,所以无法用这个办法阻止电脑进入休眠,哪位有办法?请把VFP中的使用方法尽量详细描述一下,因为我不知道怎么把其它编程语言转化为VFP语言。先谢谢了!只剩下19分了,我没法送出更多的分数,请见谅!

[此贴子已经被作者于2020-6-1 20:06编辑过]

搜索更多相关主题的帖子: 禁止 状态 模拟 键盘 VFP 
2020-06-01 19:16
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
得分:0 
回复 楼主 w7802672
我已经找到方法了,谢谢!
2020-06-01 19:39
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
得分:0 
分享一下我的方法:

在计时器中(计时少于休眠的时间)加入下面的移动鼠标的代码就可以阻止电脑进入休眠状态了。
MOUSEEVENTF_ABSOLUTE=0x8000
MOUSEEVENTF_MOVE=0x1
DECLARE mouse_event IN WIN32API Integer dwFlags,Integer dx,Integer dy,Integer cButtons,Integer dwExtraInfo
=mouse_event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_MOVE,10000,10000,0,0)
=mouse_event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_MOVE,10001,10001,0,0)
收到的鲜花
  • 静夜思2020-06-01 20:14 送鲜花  1朵  
2020-06-01 20:10
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
得分:0 
这个问题解决了,还不知道如何获取电脑的休眠时间,暂时只能将计时器设定为4分50秒,如果电脑的休眠时间是3秒仍然不能阻止电脑的休眠,哪位知道如何获取电脑休眠时间的代码请赐教,先谢谢了!
2020-06-01 20:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
操作系统有电源管理设置
2020-06-01 20:18
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
得分:0 
回复 5楼 吹水佬
是的,我的意思是别人在运行我的程序的时候,我并不能对他的电脑进行操作,我想实现的是主动读取他的电脑的休眠时间,并根据这个休眠时间来决定多长时间移动一下鼠标来避免电脑进入休眠。不是通过电脑本身的电源设置功能来查看和设置,谢谢您的回复!
2020-06-01 20:38
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
回复 6楼 w7802672
一般电源设置休眠的最小时间单位为1分钟,则一分钟之内动一下鼠标即可。
2020-06-02 06:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
这样动鼠标会不会抗干扰正常操作时鼠标的动作
2020-06-02 07:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
最好是程序启动时先保存电脑电源设定的休眠时间再设置禁止休眠、关闭时恢复保存的休眠设置
2020-06-02 08:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
试了一下,进入休眠状态,好像不会停止运行,是不是哪还有问题。
假设1分钟进入休眠
FOR i=1 TO 120
    ? TIME()+0h0D
    INKEY(1)
ENDFOR

休眠设置
DECLARE LONG SetThreadExecutionState IN kernel32 LONG
SetThreadExecutionState(0x80000003) && 禁止休眠
SetThreadExecutionState(0x80000000) && 开启休眠

2020-06-02 11:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501909-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.104406 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved