扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 125|回复: 0

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

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-2-4 02:05
  • 签到天数: 110 天

    连续签到: 2 天

    [LV.6]常住居民II

    2327

    主题

    395

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10465
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13215

    灌水之王

    发表于 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 #获取焦点置前台
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2025-3-10 12:30 , Processed in 0.134434 second(s), 57 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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