注册会员 登录
Project1 返回首页

QQEat https://rpg.blue/?326184 [收藏] [复制] [分享] [RSS] 这个人很懒,什么也没留下。

日志

【XP/VX】控制台

热度 1已有 225 次阅读2018-9-14 12:31 |个人分类:脚本

#==============================================================================
# ■ Console
#     By QQEat
#------------------------------------------------------------------------------
#  高仿VA控制台。
#   puts:控制台打印
#==============================================================================

if $TEST or $DEBUG
  Win32API.new("kernel32", "AllocConsole", "v", "i").call  # 创建
  # Win32API.new("kernel32", "FreeConsole", "v", "i").call # 释放
  Win32API.new("kernel32", "SetConsoleTitle", "p", "i").call("RGSS Console") #setTitle
  # GetStdHandle = Win32API.new("kernel32", "GetStdHandle", "i", "i") #I/O_hWnd
  # WriteConsole = Win32API.new("kernel32", "WriteConsole", "ipiii", "i") #WriteConsole
  # GetStringLength = Win32API.new("kernel32", "lstrlenA", "p", "i") #getStringLength
  $stdout = open('CONOUT$', 'w')
  
  def puts(*args)
    str = args.map{|a| a.inspect }.join("\n")
    
    #处理编码
    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
    len = m2w.call(0xFDE9,0,str,-1,nil,0)
    buf = "\0" * (len*2)
    m2w.call(0xFDE9,0,str,-1,buf,buf.size/2)
    len = w2m.call(0,0,buf,-1,nil,0,nil,nil)
    ret = "\0" * len
    w2m.call(0,0,buf,-1,ret,ret.size,nil,nil)
    str = ret.delete!("\0")
    
    $stdout.puts str; $stdout.flush
    # WriteConsole.call(GetStdHandle.call(-12), str, GetStringLength.call(str), 0, 0)
  end
  HWND = Win32API.new('user32','FindWindowEx','llpp','i').call(0, 0, 'RGSS Player', 0)
  Win32API.new('user32','SetForegroundWindow','i','i').call HWND
else
  def puts(*args);end
end

鸡蛋
1

鲜花

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-29 19:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部