Dic*_*olt 5 ruby sleep windows-7
我需要在客户计算机上运行Ruby应用程序.通常需要几天时间才能完成(复制大型备份文件).问题是如果启用睡眠,它将中断应用程序.如果没有,计算机将保持数周,直到我下次访问.有没有办法在执行期间防止睡眠,让Windows睡觉之后?
欢迎任何疯狂的想法;-)
以下是使用SetThreadExecutionState WinAPI函数的建议,它使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠或关闭显示.
就像是:
require 'Win32API'
ES_AWAYMODE_REQUIRED = 0x00000040
ES_CONTINUOUS = 0x80000000
ES_DISPLAY_REQUIRED = 0x00000002
ES_SYSTEM_REQUIRED = 0x00000001
ES_USER_PRESENT = 0x00000004
func = Win32API.new 'kernel32','SetThreadExecutionState','L'
func.call(ES_CONTINUOUS|ES_SYSTEM_REQUIRED)
# doing your stuff...
func.call(ES_CONTINUOUS)
Run Code Online (Sandbox Code Playgroud)
我在 Windows 平台上做的不多,但以下方法似乎是合乎逻辑的:
如果您的程序出错,您可能需要添加一些额外的逻辑来重新启用自动挂起。
此外,应用程序可能需要在有权启用/禁用自动挂起的帐户下运行。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1802 次 |
| 最近记录: |