找回密码
 加入
搜索
查看: 8400|回复: 10

[系统综合] [已解决]脚本运行期间系统不进入屏保、休眠状态。

  [复制链接]
发表于 2012-12-2 13:09:11 | 显示全部楼层 |阅读模式
本帖最后由 alomoi 于 2012-12-2 19:28 编辑

最近在折腾一个小工具,需要在运行期间禁止系统进入屏保和休眠状态。
就是类似于视频播放器上“不进入屏保”的那种功能。

自己考虑的半天只想到通过定期模拟鼠标或键盘操作来实现。
但是这种办法有点笨了...求教各位前辈,除此之外还有没有其他方法实现这个功能?
发表于 2012-12-2 13:34:25 | 显示全部楼层
_WinAPI_SetThreadExecutionState
 楼主| 发表于 2012-12-2 13:44:02 | 显示全部楼层
_WinAPI_SetThreadExecutionState
afan 发表于 2012-12-2 13:34


感谢A大,用api还真没想到orz...
但是有两个问题:
1、帮助里说这东西对屏保无效。
2、那个纯英文的帮助里只字未提$iFlags里五个选项的效果和用法,而且网上找不到相关资料orz。
发表于 2012-12-2 13:55:34 | 显示全部楼层
回复 3# alomoi

不是对屏保无效,而是可以通过它来改变空闲时间来达到不运行屏保和自动休眠,但不能阻止用户自己运行屏保和休眠~~
发表于 2012-12-2 14:57:54 | 显示全部楼层
_WinAPI_SetThreadExecutionState 确实不能禁止屏保。
不过可以换一种方式,试试我的代码
Global Const $WM_SYSCOMMAND = 0x0112, $SCREENMSG = 0xF140

GUICreate('本Gui程序禁用屏保 @afan', 300, 100)
GUIRegisterMsg($WM_SYSCOMMAND, "_WM_SYSCOMMAND")
GUICtrlCreateLabel('注:本窗体置于前台时将禁用屏保', 10, 20, 200, 15)
GUISetState()

While GUIGetMsg() <> -3
Wend

Func _WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
        If $wParam = $SCREENMSG Then Return 1
EndFunc   ;==>MY_WM_COMMAND

评分

参与人数 1金钱 +10 收起 理由
alomoi + 10

查看全部评分

发表于 2012-12-2 16:07:56 | 显示全部楼层
回复 5# afan


_WinAPI_SystemParametersInfo(0x0011,False) ;False 取消,True 打开屏保
Func _WinAPI_SystemParametersInfo($iAction, $iParam = 0, $vParam = 0, $iWinIni = 0)
        Local $aResult = DllCall("user32.dll", "bool", "SystemParametersInfoW", "uint", $iAction, "uint", $iParam, "ptr", $vParam, "uint", $iWinIni)
        If @error Then Return SetError(@error, @extended, False)
        Return $aResult[0]
EndFunc   ;==>_WinAPI_SystemParametersInfo

   

禁用屏保,XP SP3实测有效,不过休眠那个~~XP/03不好像不支持~~

评分

参与人数 2金钱 +30 收起 理由
alomoi + 10
afan + 20

查看全部评分

发表于 2012-12-2 17:16:38 | 显示全部楼层
回复 6# annybaby


    不错,禁用和启用均有效。不过,最好应该先获取状态,以便程序退出时还原。

评分

参与人数 1金钱 +10 收起 理由
annybaby + 10 有理~~

查看全部评分

 楼主| 发表于 2012-12-2 19:28:08 | 显示全部楼层
感谢两位指点。
代码对我来说有点复杂,先拖去慢慢消化下 m(_ _)m
发表于 2013-3-17 19:33:08 | 显示全部楼层
回复 7# afan


    获取要怎么实现呢,我看了半天,也试了好多次,就是不知道参数怎么传递的。
发表于 2013-6-9 10:11:59 | 显示全部楼层
感谢分享,学习学习
发表于 2013-11-6 21:47:48 | 显示全部楼层
好吧,我先在一头 雾水,怎么用winapi啊,英文差了伤不起
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 10:05 , Processed in 0.129710 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表