# 取得窗口句柄
HWND = Win32API.new('user32', 'GetActiveWindow', nil, 'l').call

# 取得客户区矩形
client_rect = "\0" * 16
Win32API.new('user32', 'GetClientRect', 'lp', 'i').call(HWND, client_rect)
ary = client_rect.unpack('llll')
point_ul = ary[0..1].pack('ll')
point_lr = ary[2..3].pack('ll')
CTS = Win32API.new('user32', 'ClientToScreen', 'lp', 'i')
CTS.call(HWND, point_ul)
CTS.call(HWND, point_lr)
client_rect = (point_ul.unpack('ll') + point_lr.unpack('ll')).pack('llll')

# 限制鼠标
Win32API.new('user32', 'ClipCursor', 'p', 'l').call(client_rect)

# 解除限制
Win32API.new('user32', 'ClipCursor', 'p', 'l').call(nil)