[已解决]脚本运行期间系统不进入屏保、休眠状态。
本帖最后由 alomoi 于 2012-12-2 19:28 编辑最近在折腾一个小工具,需要在运行期间禁止系统进入屏保和休眠状态。
就是类似于视频播放器上“不进入屏保”的那种功能。
自己考虑的半天只想到通过定期模拟鼠标或键盘操作来实现。
但是这种办法有点笨了...求教各位前辈,除此之外还有没有其他方法实现这个功能? _WinAPI_SetThreadExecutionState _WinAPI_SetThreadExecutionState
afan 发表于 2012-12-2 13:34 http://www.autoitx.com/images/common/back.gif
感谢A大,用api还真没想到orz...
但是有两个问题:
1、帮助里说这东西对屏保无效。
2、那个纯英文的帮助里只字未提$iFlags里五个选项的效果和用法,而且网上找不到相关资料orz。 回复 3# alomoi
不是对屏保无效,而是可以通过它来改变空闲时间来达到不运行屏保和自动休眠,但不能阻止用户自己运行屏保和休眠~~ _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
回复 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
EndFunc ;==>_WinAPI_SystemParametersInfo
禁用屏保,XP SP3实测有效,不过休眠那个~~XP/03不好像不支持~~ 回复 6# annybaby
不错,禁用和启用均有效。不过,最好应该先获取状态,以便程序退出时还原。 感谢两位指点。
代码对我来说有点复杂,先拖去慢慢消化下 m(_ _)m 回复 7# afan
获取要怎么实现呢,我看了半天,也试了好多次,就是不知道参数怎么传递的。 感谢分享,学习学习 好吧,我先在一头 雾水,怎么用winapi啊,英文差了伤不起
页:
[1]