# 取得窗口句柄 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)