楼主: 雨落忧伤

[已经解决] 请问如何获取Windows用户的用户名

[复制链接]
梦石
0
星屑
837
在线时间
61 小时
注册时间
2017-10-24
回帖
26
 楼主| 发表于 2017-12-10 19:38:46 | 显示全部楼层
fux2 发表于 2017-12-10 19:16
有了楼上的这段不需要之前的代码了。

嗯,的确是可以……但是问题和刚才那位的是一样的……
就是最后无法显示……不过这个也许是无法解决的吧……
QQ图片20171210193743.png
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45726
在线时间
7951 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2017-12-10 23:06:25 | 显示全部楼层
雨落忧伤 发表于 2017-12-10 19:38
嗯,的确是可以……但是问题和刚才那位的是一样的……
就是最后无法显示……不过这个也许是无法解决的吧 ...

在你的脚本最上面插入一页新页,粘贴以下内容,
然后变量设置的地方改成
ENV['UserName'].s2u


  1. class String

  2.   @@MultiByteToWideChar  = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  3.   @@WideCharToMultiByte  = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  4.   def u2w
  5.     i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  6.     buffer = "\0" * (i*2)
  7.     @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  8.     buffer.chop!
  9.     return buffer
  10.   end  

  11.   def u2s
  12.     i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  13.     buffer = "\0" * (i*2)
  14.     @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  15.     i = @@WideCharToMultiByte.call(0, 0, buffer, -1, nil, 0, nil, nil)
  16.     result = "\0" * i
  17.     @@WideCharToMultiByte.call(0, 0, buffer, -1, result, i, nil, nil)
  18.     result.chop!
  19.     return result
  20.   end

  21.   def s2u
  22.     i = @@MultiByteToWideChar.call(0, 0, self, -1, nil, 0)
  23.     buffer = "\0" * (i*2)
  24.     @@MultiByteToWideChar.call(0, 0, self, -1, buffer, buffer.size / 2)
  25.     i = @@WideCharToMultiByte.call(65001, 0, buffer, -1, nil, 0, nil, nil)
  26.     result = "\0" * i
  27.     @@WideCharToMultiByte.call(65001, 0, buffer, -1, result, result.size, nil, nil)
  28.     result.chop!
  29.     return result
  30.   end
  31. end
复制代码
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
837
在线时间
61 小时
注册时间
2017-10-24
回帖
26
 楼主| 发表于 2017-12-11 09:19:22 | 显示全部楼层
fux2 发表于 2017-12-10 23:06
在你的脚本最上面插入一页新页,粘贴以下内容,
然后变量设置的地方改成
ENV['UserName'].s2u

感谢……不过仍然出现了报错,不知道还有办法解决吗?
我把刚才那段脚本放到了最顶部,然后试了一下就是这样了——

QQ图片20171211091810.png
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-12-11 09:43:35 | 显示全部楼层
本帖最后由 喵呜喵5 于 2017-12-11 09:45 编辑

插入脚本:
  1. class Game_Interpreter
  2.   def m5_20171211_username(v=nil)
  3.     str = ENV['UserName'].dup
  4.     m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  5.     w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  6.     i = m2w.call(0, 0, str, -1, nil, 0)
  7.     buffer = "\0" * (i*2)
  8.     m2w.call(0, 0, str, -1, buffer, buffer.size / 2)
  9.     i = w2m.call(65001, 0, buffer, -1, nil, 0, nil, nil)
  10.     result = "\0" * i
  11.     w2m.call(65001, 0, buffer, -1, result, result.size, nil, nil)
  12.     result.chop!
  13.     $game_variables[v] = result if v
  14.     return result
  15.   end
  16. end
复制代码


事件的脚本指令中输入:
  1. m5_20171211_username(2)
复制代码

则 2 号变量的值就是当前的用户名,之后在对话中输入 \v[2] 即可显示对应文本

点评

多谢,完美解决!  发表于 2017-12-11 10:11

评分

参与人数 1星屑 +80 收起 理由
fux2 + 80 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2017-12-11 13:25:25 | 显示全部楼层
雨落忧伤 发表于 2017-12-10 18:18
多谢提醒,已经尝试了。
确实不会报错了,但是有了一个新的问题,那就是显示出来的是一些无法识别的字符 ...

缺失的是中文吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部