查看: 106|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 94 天

    连续签到: 4 天

    [LV.6]常住居民II

    2045

    主题

    133

    回帖

    9594

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    -2
    卡币
    7404
    OK点
    16
    积分
    9594
    发表于 2024-4-18 15:58:26 | 显示全部楼层 |阅读模式
    [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 #获取焦点置前台
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-11-11 04:44 , Processed in 0.048175 second(s), 42 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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