赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 949 |
最后登录 | 2012-10-2 |
在线时间 | 30 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 30 小时
- 注册时间
- 2012-3-6
- 帖子
- 35
|
module Graphics
@ask1 = ["你已玩了x小时,请问要关机吗?","反沉迷提示!!"]
@ask2 = ["如果不关机会直接退出游戏,确定吗?","反沉迷提示!!"]
CP_ACP = 0
CP_UTF8 = 65001
TIME = 2700
@ctext = Array.new
@m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
@w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
@msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')
@wsm = Proc.new{|i|
len = @m2w.call(CP_UTF8, 0, i, -1, nil, 0)
buf = "\0\0" * len
@m2w.call(CP_UTF8, 0, i, -1, buf, buf.size/2)
len = @w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
@ctext.push "\0" * len
@w2m.call(CP_ACP, 0, buf, -1, @ctext.last, @ctext.last.size, nil, nil)
}
[@ask1,@ask2].flatten.each{|i| @wsm.call(i)}
@update = method("update") if @update.nil?
def self.update
@first = Time.now.sec if !@first
@atend = Time.now.sec
if ((@atend - @first).abs+1) % TIME == 0
begin
self.warning{|a,b| @msgbox.call(0, a, b, 1) }
rescue Hangup
exit
end
end
@update.call
end
def self.warning
2.times{|j| j == 0 ?
((yield @ctext[0], @ctext[1]) == 1 ? (`Shutdown.exe -s -t 10`) : (next)):
(yield @ctext[2], @ctext[3]) == 1 ? (exit) : (retry)
}
end
end
求鉴定
帮忙加上点注释 |
|