查看: 63|回复: 0

[转载发布] 【VX\XP】高仿VA控制台

[复制链接]
  • TA的每日心情
    开心
    2024-5-10 09:55
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年七月四日(秋) | 显示全部楼层 |阅读模式
    [Ruby] 纯文本查看 复制代码
    #==============================================================================
    # ■ 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
      
      def puts(*args)
        str = ""
        args.each{|a| str << (a.is_a?(String) ? "\"" << a.to_s << "\"" : a.inspect) << "\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")
       
        WriteConsole.call(GetStdHandle.call(-12), str, GetStringLength.call(str), 0, 0)
      end
    else
      def puts(*args);end
    end
    HWnd = Win32API.new('user32','FindWindowEx','llpp','i')
    Win32API.new('user32','SetForegroundWindow','i','i').call(HWnd.call(0, 0, 'RGSS Player', 0)) if $TEST or $DEBUG #获取焦点置前台
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-21 10:02 , Processed in 0.049273 second(s), 48 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表